| Index: chrome/browser/process_singleton.h
|
| diff --git a/chrome/browser/process_singleton.h b/chrome/browser/process_singleton.h
|
| index 2b03b2d0bcfaa496f5a5ec3284ff36ef34009d84..961a51f7ecf66df0b8b7bb1c0fb4c0ad928fbb7d 100644
|
| --- a/chrome/browser/process_singleton.h
|
| +++ b/chrome/browser/process_singleton.h
|
| @@ -67,16 +67,6 @@ class ProcessSingleton : public base::NonThreadSafe {
|
| explicit ProcessSingleton(const FilePath& user_data_dir);
|
| ~ProcessSingleton();
|
|
|
| - // Notify another process, if available.
|
| - // Returns true if another process was found and notified, false if we
|
| - // should continue with this process.
|
| - // Windows code roughly based on Mozilla.
|
| - //
|
| - // TODO(brettw): this will not handle all cases. If two process start up too
|
| - // close to each other, the Create() might not yet have happened for the
|
| - // first one, so this function won't find it.
|
| - NotifyResult NotifyOtherProcess();
|
| -
|
| // Notify another process, if available. Otherwise sets ourselves as the
|
| // singleton instance and stores the provided callback for notification from
|
| // future processes. Returns PROCESS_NONE if we became the singleton
|
| @@ -84,20 +74,14 @@ class ProcessSingleton : public base::NonThreadSafe {
|
| NotifyResult NotifyOtherProcessOrCreate(
|
| const NotificationCallback& notification_callback);
|
|
|
| -#if defined(OS_LINUX) || defined(OS_OPENBSD)
|
| - // Exposed for testing. We use a timeout on Linux, and in tests we want
|
| - // this timeout to be short.
|
| - NotifyResult NotifyOtherProcessWithTimeout(const CommandLine& command_line,
|
| - int timeout_seconds,
|
| - bool kill_unresponsive);
|
| - NotifyResult NotifyOtherProcessWithTimeoutOrCreate(
|
| - const CommandLine& command_line,
|
| - const NotificationCallback& notification_callback,
|
| - int timeout_seconds);
|
| - void OverrideCurrentPidForTesting(base::ProcessId pid);
|
| - void OverrideKillCallbackForTesting(const base::Callback<void(int)>& callback);
|
| - static void DisablePromptForTesting();
|
| -#endif // defined(OS_LINUX) || defined(OS_OPENBSD)
|
| + // Sets ourself up as the singleton instance. Returns true on success. If
|
| + // false is returned, we are not the singleton instance and the caller must
|
| + // exit. Otherwise, stores the provided callback for notification from
|
| + // future processes.
|
| + // NOTE: Most callers should generally prefer NotifyOtherProcessOrCreate() to
|
| + // this method, only callers for whom failure is prefered to notifying another
|
| + // process should call this directly.
|
| + bool Create(const NotificationCallback& notification_callback);
|
|
|
| #if defined(OS_WIN)
|
| // Used in specific cases to let us know that there is an existing instance
|
| @@ -110,13 +94,6 @@ class ProcessSingleton : public base::NonThreadSafe {
|
| }
|
| #endif // defined(OS_WIN)
|
|
|
| - // Sets ourself up as the singleton instance. Returns true on success. If
|
| - // false is returned, we are not the singleton instance and the caller must
|
| - // exit. Otherwise, stores the provided callback for notification from
|
| - // future processes.
|
| - bool Create(
|
| - const NotificationCallback& notification_callback);
|
| -
|
| // Clear any lock state during shutdown.
|
| void Cleanup();
|
|
|
| @@ -148,6 +125,36 @@ class ProcessSingleton : public base::NonThreadSafe {
|
| LRESULT WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam);
|
| #endif
|
|
|
| +#if defined(OS_LINUX) || defined(OS_OPENBSD)
|
| + static void DisablePromptForTesting();
|
| +#endif // defined(OS_LINUX) || defined(OS_OPENBSD)
|
| +
|
| + protected:
|
| + // Notify another process, if available.
|
| + // Returns true if another process was found and notified, false if we
|
| + // should continue with this process.
|
| + // Windows code roughly based on Mozilla.
|
| + //
|
| + // TODO(brettw): this will not handle all cases. If two processes start up too
|
| + // close to each other, the Create() might not yet have happened for the
|
| + // first one, so this function won't find it.
|
| + NotifyResult NotifyOtherProcess();
|
| +
|
| +#if defined(OS_LINUX) || defined(OS_OPENBSD)
|
| + // Exposed for testing. We use a timeout on Linux, and in tests we want
|
| + // this timeout to be short.
|
| + NotifyResult NotifyOtherProcessWithTimeout(const CommandLine& command_line,
|
| + int timeout_seconds,
|
| + bool kill_unresponsive);
|
| + NotifyResult NotifyOtherProcessWithTimeoutOrCreate(
|
| + const CommandLine& command_line,
|
| + const NotificationCallback& notification_callback,
|
| + int timeout_seconds);
|
| + void OverrideCurrentPidForTesting(base::ProcessId pid);
|
| + void OverrideKillCallbackForTesting(
|
| + const base::Callback<void(int)>& callback);
|
| +#endif // defined(OS_LINUX) || defined(OS_OPENBSD)
|
| +
|
| private:
|
| typedef std::pair<CommandLine::StringVector, FilePath> DelayedStartupMessage;
|
|
|
|
|