summaryrefslogtreecommitdiffstats
path: root/chrome/browser/platform_util_common_linux.cc
diff options
context:
space:
mode:
authordhg@chromium.org <dhg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-29 21:44:24 +0000
committerdhg@chromium.org <dhg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-29 21:44:24 +0000
commit14a000d1e7ced20cb4866a727323e4ea99f78bf7 (patch)
treebdee87d2b78ec19c5f64cb2121f61a5d46d12a0b /chrome/browser/platform_util_common_linux.cc
parent58e1d9a47237870c128fe00fbd2e94e96319ffed (diff)
downloadchromium_src-14a000d1e7ced20cb4866a727323e4ea99f78bf7.zip
chromium_src-14a000d1e7ced20cb4866a727323e4ea99f78bf7.tar.gz
chromium_src-14a000d1e7ced20cb4866a727323e4ea99f78bf7.tar.bz2
Changing linux platform for chromeos. This involved moving platform_util and extension_error_reporter to browser, so that the UIs surrounding them can be in the browser.
BUG=none TEST=none Review URL: http://codereview.chromium.org/1705009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@45986 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/platform_util_common_linux.cc')
-rw-r--r--chrome/browser/platform_util_common_linux.cc83
1 files changed, 83 insertions, 0 deletions
diff --git a/chrome/browser/platform_util_common_linux.cc b/chrome/browser/platform_util_common_linux.cc
new file mode 100644
index 0000000..328d260
--- /dev/null
+++ b/chrome/browser/platform_util_common_linux.cc
@@ -0,0 +1,83 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/platform_util.h"
+
+#include <gtk/gtk.h>
+
+#include "app/gtk_util.h"
+#include "base/file_util.h"
+#include "base/process_util.h"
+#include "base/utf_string_conversions.h"
+#include "chrome/common/process_watcher.h"
+#include "gfx/native_widget_types.h"
+#include "googleurl/src/gurl.h"
+
+namespace platform_util {
+
+gfx::NativeWindow GetTopLevel(gfx::NativeView view) {
+ // A detached widget won't have a toplevel window as an ancestor, so we can't
+ // assume that the query for toplevel will return a window.
+ GtkWidget* toplevel = gtk_widget_get_ancestor(view, GTK_TYPE_WINDOW);
+ return GTK_IS_WINDOW(toplevel) ? GTK_WINDOW(toplevel) : NULL;
+}
+
+bool IsWindowActive(gfx::NativeWindow window) {
+ return gtk_window_is_active(window);
+}
+
+bool IsVisible(gfx::NativeView view) {
+ return GTK_WIDGET_VISIBLE(view);
+}
+
+void SimpleErrorBox(gfx::NativeWindow parent,
+ const string16& title,
+ const string16& message) {
+ GtkWidget* dialog = gtk_message_dialog_new(parent, GTK_DIALOG_MODAL,
+ GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s", UTF16ToUTF8(message).c_str());
+ gtk_util::ApplyMessageDialogQuirks(dialog);
+ gtk_window_set_title(GTK_WINDOW(dialog), UTF16ToUTF8(title).c_str());
+
+ g_signal_connect(dialog, "response", G_CALLBACK(gtk_widget_destroy), NULL);
+ gtk_widget_show_all(dialog);
+
+ // Make sure it's big enough to show the title.
+ GtkRequisition req;
+ gtk_widget_size_request(dialog, &req);
+ int width;
+ gtk_util::GetWidgetSizeFromCharacters(dialog, title.length(), 0,
+ &width, NULL);
+ // The fudge factor accounts for extra space needed by the frame
+ // decorations as well as width differences between average text and the
+ // actual title text.
+ width = width * 1.2 + 50;
+
+ if (width > req.width)
+ gtk_widget_set_size_request(dialog, width, -1);
+}
+
+/* Warning: this may be either Linux or ChromeOS */
+string16 GetVersionStringModifier() {
+ char* env = getenv("CHROME_VERSION_EXTRA");
+ if (!env)
+ return string16();
+ std::string modifier(env);
+
+#if defined(GOOGLE_CHROME_BUILD)
+ // Only ever return "", "unknown", "dev" or "beta" in a branded build.
+ if (modifier == "unstable") // linux version of "dev"
+ modifier = "dev";
+ if (modifier == "stable") {
+ modifier = "";
+ } else if ((modifier == "dev") || (modifier == "beta")) {
+ // do nothing.
+ } else {
+ modifier = "unknown";
+ }
+#endif
+
+ return ASCIIToUTF16(modifier);
+}
+
+} // namespace platform_util