| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #if !defined(OS_CHROMEOS) | 5 #if !defined(OS_CHROMEOS) |
| 6 | 6 |
| 7 #include "chrome/browser/ui/webui/settings_utils.h" | 7 #include "chrome/browser/ui/webui/settings_utils.h" |
| 8 | 8 |
| 9 #include <stddef.h> | 9 #include <stddef.h> |
| 10 | 10 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 | 43 |
| 44 // The URL for Linux proxy configuration help when not running under a | 44 // The URL for Linux proxy configuration help when not running under a |
| 45 // supported desktop environment. | 45 // supported desktop environment. |
| 46 const char kLinuxProxyConfigUrl[] = "about:linux-proxy-config"; | 46 const char kLinuxProxyConfigUrl[] = "about:linux-proxy-config"; |
| 47 | 47 |
| 48 namespace { | 48 namespace { |
| 49 | 49 |
| 50 // Show the proxy config URL in the given tab. | 50 // Show the proxy config URL in the given tab. |
| 51 void ShowLinuxProxyConfigUrl(int render_process_id, int render_view_id) { | 51 void ShowLinuxProxyConfigUrl(int render_process_id, int render_view_id) { |
| 52 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 52 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 53 scoped_ptr<base::Environment> env(base::Environment::Create()); | 53 std::unique_ptr<base::Environment> env(base::Environment::Create()); |
| 54 const char* name = base::nix::GetDesktopEnvironmentName(env.get()); | 54 const char* name = base::nix::GetDesktopEnvironmentName(env.get()); |
| 55 if (name) | 55 if (name) |
| 56 LOG(ERROR) << "Could not find " << name << " network settings in $PATH"; | 56 LOG(ERROR) << "Could not find " << name << " network settings in $PATH"; |
| 57 OpenURLParams params( | 57 OpenURLParams params( |
| 58 GURL(kLinuxProxyConfigUrl), Referrer(), NEW_FOREGROUND_TAB, | 58 GURL(kLinuxProxyConfigUrl), Referrer(), NEW_FOREGROUND_TAB, |
| 59 ui::PAGE_TRANSITION_LINK, false); | 59 ui::PAGE_TRANSITION_LINK, false); |
| 60 | 60 |
| 61 content::WebContents* web_contents = | 61 content::WebContents* web_contents = |
| 62 tab_util::GetWebContentsByID(render_process_id, render_view_id); | 62 tab_util::GetWebContentsByID(render_process_id, render_view_id); |
| 63 if (web_contents) | 63 if (web_contents) |
| 64 web_contents->OpenURL(params); | 64 web_contents->OpenURL(params); |
| 65 } | 65 } |
| 66 | 66 |
| 67 // Start the given proxy configuration utility. | 67 // Start the given proxy configuration utility. |
| 68 bool StartProxyConfigUtil(const char* command[]) { | 68 bool StartProxyConfigUtil(const char* command[]) { |
| 69 DCHECK_CURRENTLY_ON(BrowserThread::FILE); | 69 DCHECK_CURRENTLY_ON(BrowserThread::FILE); |
| 70 // base::LaunchProcess() returns true ("success") if the fork() | 70 // base::LaunchProcess() returns true ("success") if the fork() |
| 71 // succeeds, but not necessarily the exec(). We'd like to be able to | 71 // succeeds, but not necessarily the exec(). We'd like to be able to |
| 72 // use StartProxyConfigUtil() to search possible options and stop on | 72 // use StartProxyConfigUtil() to search possible options and stop on |
| 73 // success, so we search $PATH first to predict whether the exec is | 73 // success, so we search $PATH first to predict whether the exec is |
| 74 // expected to succeed. | 74 // expected to succeed. |
| 75 // TODO(mdm): this is a useful check, and is very similar to some | 75 // TODO(mdm): this is a useful check, and is very similar to some |
| 76 // code in proxy_config_service_linux.cc. It should probably be in | 76 // code in proxy_config_service_linux.cc. It should probably be in |
| 77 // base:: somewhere. | 77 // base:: somewhere. |
| 78 scoped_ptr<base::Environment> env(base::Environment::Create()); | 78 std::unique_ptr<base::Environment> env(base::Environment::Create()); |
| 79 std::string path; | 79 std::string path; |
| 80 if (!env->GetVar("PATH", &path)) { | 80 if (!env->GetVar("PATH", &path)) { |
| 81 LOG(ERROR) << "No $PATH variable. Assuming no " << command[0] << "."; | 81 LOG(ERROR) << "No $PATH variable. Assuming no " << command[0] << "."; |
| 82 return false; | 82 return false; |
| 83 } | 83 } |
| 84 | 84 |
| 85 bool found = false; | 85 bool found = false; |
| 86 for (const base::StringPiece& cur_path : | 86 for (const base::StringPiece& cur_path : |
| 87 base::SplitStringPiece(path, ":", base::KEEP_WHITESPACE, | 87 base::SplitStringPiece(path, ":", base::KEEP_WHITESPACE, |
| 88 base::SPLIT_WANT_NONEMPTY)) { | 88 base::SPLIT_WANT_NONEMPTY)) { |
| (...skipping 16 matching lines...) Expand all Loading... |
| 105 } | 105 } |
| 106 base::EnsureProcessGetsReaped(process.Pid()); | 106 base::EnsureProcessGetsReaped(process.Pid()); |
| 107 return true; | 107 return true; |
| 108 } | 108 } |
| 109 | 109 |
| 110 // Detect, and if possible, start the appropriate proxy config utility. On | 110 // Detect, and if possible, start the appropriate proxy config utility. On |
| 111 // failure to do so, show the Linux proxy config URL in a new tab instead. | 111 // failure to do so, show the Linux proxy config URL in a new tab instead. |
| 112 void DetectAndStartProxyConfigUtil(int render_process_id, | 112 void DetectAndStartProxyConfigUtil(int render_process_id, |
| 113 int render_view_id) { | 113 int render_view_id) { |
| 114 DCHECK_CURRENTLY_ON(BrowserThread::FILE); | 114 DCHECK_CURRENTLY_ON(BrowserThread::FILE); |
| 115 scoped_ptr<base::Environment> env(base::Environment::Create()); | 115 std::unique_ptr<base::Environment> env(base::Environment::Create()); |
| 116 | 116 |
| 117 bool launched = false; | 117 bool launched = false; |
| 118 switch (base::nix::GetDesktopEnvironment(env.get())) { | 118 switch (base::nix::GetDesktopEnvironment(env.get())) { |
| 119 case base::nix::DESKTOP_ENVIRONMENT_GNOME: | 119 case base::nix::DESKTOP_ENVIRONMENT_GNOME: |
| 120 case base::nix::DESKTOP_ENVIRONMENT_UNITY: { | 120 case base::nix::DESKTOP_ENVIRONMENT_UNITY: { |
| 121 launched = StartProxyConfigUtil(kGNOME2ProxyConfigCommand); | 121 launched = StartProxyConfigUtil(kGNOME2ProxyConfigCommand); |
| 122 if (!launched) { | 122 if (!launched) { |
| 123 // We try this second, even though it's the newer way, because this | 123 // We try this second, even though it's the newer way, because this |
| 124 // command existed in older versions of GNOME, but it didn't do the | 124 // command existed in older versions of GNOME, but it didn't do the |
| 125 // same thing. The older command is gone though, so this should do | 125 // same thing. The older command is gone though, so this should do |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 159 void ShowNetworkProxySettings(content::WebContents* web_contents) { | 159 void ShowNetworkProxySettings(content::WebContents* web_contents) { |
| 160 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, | 160 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, |
| 161 base::Bind(&DetectAndStartProxyConfigUtil, | 161 base::Bind(&DetectAndStartProxyConfigUtil, |
| 162 web_contents->GetRenderProcessHost()->GetID(), | 162 web_contents->GetRenderProcessHost()->GetID(), |
| 163 web_contents->GetRenderViewHost()->GetRoutingID())); | 163 web_contents->GetRenderViewHost()->GetRoutingID())); |
| 164 } | 164 } |
| 165 | 165 |
| 166 } // namespace settings_utils | 166 } // namespace settings_utils |
| 167 | 167 |
| 168 #endif // !defined(OS_CHROMEOS) | 168 #endif // !defined(OS_CHROMEOS) |
| OLD | NEW |