diff options
author | dhg@chromium.org <dhg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-29 21:44:24 +0000 |
---|---|---|
committer | dhg@chromium.org <dhg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-29 21:44:24 +0000 |
commit | 14a000d1e7ced20cb4866a727323e4ea99f78bf7 (patch) | |
tree | bdee87d2b78ec19c5f64cb2121f61a5d46d12a0b /chrome/browser/platform_util_common_linux.cc | |
parent | 58e1d9a47237870c128fe00fbd2e94e96319ffed (diff) | |
download | chromium_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.cc | 83 |
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 |