1// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_UI_GTK_PROCESS_SINGLETON_DIALOG_H_
6#define CHROME_BROWSER_UI_GTK_PROCESS_SINGLETON_DIALOG_H_
7#pragma once
8
9#include <string>
10
11#include "base/basictypes.h"
12#include "ui/base/gtk/gtk_signal.h"
13
14typedef struct _GtkWidget GtkWidget;
15
16// Displays an error to the user when the ProcessSingleton cannot acquire the
17// lock.  This runs the message loop itself as the browser message loop has not
18// started by that point in the startup process.
19class ProcessSingletonDialog {
20 public:
21  // Shows the dialog, and returns once the dialog has been closed.
22  static void ShowAndRun(const std::string& message);
23
24 private:
25  explicit ProcessSingletonDialog(const std::string& message);
26
27  CHROMEGTK_CALLBACK_1(ProcessSingletonDialog, void, OnResponse, int);
28
29  GtkWidget* dialog_;
30
31  DISALLOW_COPY_AND_ASSIGN(ProcessSingletonDialog);
32};
33
34#endif  // CHROME_BROWSER_UI_GTK_PROCESS_SINGLETON_DIALOG_H_
35