Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(69)

Unified Diff: chrome/browser/ui/webui/options/advanced_options_utils_x11.cc

Issue 34583002: Convert X11 AdvancedOptionsUtilities to generic Linux platforms (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/webui/options/advanced_options_utils_linux.cc ('k') | chrome/chrome_browser_ui.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/webui/options/advanced_options_utils_x11.cc
diff --git a/chrome/browser/ui/webui/options/advanced_options_utils_x11.cc b/chrome/browser/ui/webui/options/advanced_options_utils_x11.cc
deleted file mode 100644
index 211f5b979747f2b8eb446f7c5a01ddd08fb9822c..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/webui/options/advanced_options_utils_x11.cc
+++ /dev/null
@@ -1,159 +0,0 @@
-// Copyright (c) 2012 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.
-
-#if !defined(OS_CHROMEOS)
-
-#include "chrome/browser/ui/webui/options/advanced_options_utils.h"
-
-#include "base/bind.h"
-#include "base/environment.h"
-#include "base/file_util.h"
-#include "base/files/file_path.h"
-#include "base/nix/xdg_util.h"
-#include "base/process/launch.h"
-#include "base/strings/string_util.h"
-#include "chrome/browser/tab_contents/tab_util.h"
-#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/render_process_host.h"
-#include "content/public/browser/render_view_host.h"
-#include "content/public/browser/web_contents.h"
-
-using content::BrowserThread;
-using content::OpenURLParams;
-using content::Referrer;
-using content::WebContents;
-
-namespace options {
-
-// Command used to configure GNOME 2 proxy settings.
-const char* kGNOME2ProxyConfigCommand[] = {"gnome-network-properties", NULL};
-// In GNOME 3, we might need to run gnome-control-center instead. We try this
-// only after gnome-network-properties is not found, because older GNOME also
-// has this but it doesn't do the same thing. See below where we use it.
-const char* kGNOME3ProxyConfigCommand[] = {"gnome-control-center", "network",
- NULL};
-// KDE3 and KDE4 are only slightly different, but incompatible. Go figure.
-const char* kKDE3ProxyConfigCommand[] = {"kcmshell", "proxy", NULL};
-const char* kKDE4ProxyConfigCommand[] = {"kcmshell4", "proxy", NULL};
-
-// The URL for Linux proxy configuration help when not running under a
-// supported desktop environment.
-const char kLinuxProxyConfigUrl[] = "about:linux-proxy-config";
-
-namespace {
-
-// Show the proxy config URL in the given tab.
-void ShowLinuxProxyConfigUrl(int render_process_id, int render_view_id) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- scoped_ptr<base::Environment> env(base::Environment::Create());
- const char* name = base::nix::GetDesktopEnvironmentName(env.get());
- if (name)
- LOG(ERROR) << "Could not find " << name << " network settings in $PATH";
- OpenURLParams params(
- GURL(kLinuxProxyConfigUrl), Referrer(), NEW_FOREGROUND_TAB,
- content::PAGE_TRANSITION_LINK, false);
-
- WebContents* web_contents =
- tab_util::GetWebContentsByID(render_process_id, render_view_id);
- if (web_contents)
- web_contents->OpenURL(params);
-}
-
-// Start the given proxy configuration utility.
-bool StartProxyConfigUtil(const char* command[]) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
- // base::LaunchProcess() returns true ("success") if the fork()
- // succeeds, but not necessarily the exec(). We'd like to be able to
- // use StartProxyConfigUtil() to search possible options and stop on
- // success, so we search $PATH first to predict whether the exec is
- // expected to succeed.
- // TODO(mdm): this is a useful check, and is very similar to some
- // code in proxy_config_service_linux.cc. It should probably be in
- // base:: somewhere.
- scoped_ptr<base::Environment> env(base::Environment::Create());
- std::string path;
- if (!env->GetVar("PATH", &path)) {
- LOG(ERROR) << "No $PATH variable. Assuming no " << command[0] << ".";
- return false;
- }
- std::vector<std::string> paths;
- Tokenize(path, ":", &paths);
- bool found = false;
- for (size_t i = 0; i < paths.size(); ++i) {
- base::FilePath file(paths[i]);
- if (base::PathExists(file.Append(command[0]))) {
- found = true;
- break;
- }
- }
- if (!found)
- return false;
- std::vector<std::string> argv;
- for (size_t i = 0; command[i]; ++i)
- argv.push_back(command[i]);
- base::ProcessHandle handle;
- if (!base::LaunchProcess(argv, base::LaunchOptions(), &handle)) {
- LOG(ERROR) << "StartProxyConfigUtil failed to start " << command[0];
- return false;
- }
- base::EnsureProcessGetsReaped(handle);
- return true;
-}
-
-// Detect, and if possible, start the appropriate proxy config utility. On
-// failure to do so, show the Linux proxy config URL in a new tab instead.
-void DetectAndStartProxyConfigUtil(int render_process_id,
- int render_view_id) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
- scoped_ptr<base::Environment> env(base::Environment::Create());
-
- bool launched = false;
- switch (base::nix::GetDesktopEnvironment(env.get())) {
- case base::nix::DESKTOP_ENVIRONMENT_GNOME:
- case base::nix::DESKTOP_ENVIRONMENT_UNITY: {
- launched = StartProxyConfigUtil(kGNOME2ProxyConfigCommand);
- if (!launched) {
- // We try this second, even though it's the newer way, because this
- // command existed in older versions of GNOME, but it didn't do the
- // same thing. The older command is gone though, so this should do
- // the right thing. (Also some distributions have blurred the lines
- // between GNOME 2 and 3, so we can't necessarily detect what the
- // right thing is based on indications of which version we have.)
- launched = StartProxyConfigUtil(kGNOME3ProxyConfigCommand);
- }
- break;
- }
-
- case base::nix::DESKTOP_ENVIRONMENT_KDE3:
- launched = StartProxyConfigUtil(kKDE3ProxyConfigCommand);
- break;
-
- case base::nix::DESKTOP_ENVIRONMENT_KDE4:
- launched = StartProxyConfigUtil(kKDE4ProxyConfigCommand);
- break;
-
- case base::nix::DESKTOP_ENVIRONMENT_XFCE:
- case base::nix::DESKTOP_ENVIRONMENT_OTHER:
- break;
- }
-
- if (launched)
- return;
- BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
- base::Bind(&ShowLinuxProxyConfigUrl, render_process_id, render_view_id));
-}
-
-} // anonymous namespace
-
-void AdvancedOptionsUtilities::ShowNetworkProxySettings(
- WebContents* web_contents) {
- BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE,
- base::Bind(&DetectAndStartProxyConfigUtil,
- web_contents->GetRenderProcessHost()->GetID(),
- web_contents->GetRenderViewHost()->GetRoutingID()));
-}
-
-} // namespace options
-
-#endif // !defined(OS_CHROMEOS)
« no previous file with comments | « chrome/browser/ui/webui/options/advanced_options_utils_linux.cc ('k') | chrome/chrome_browser_ui.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698