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

Side by Side Diff: chrome/browser/gtk/options/advanced_contents_gtk.cc

Issue 155792: Try again: Add proxy config (using gnome-network-preferences) (Closed)
Patch Set: nits fixed Created 11 years, 5 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 #include "chrome/browser/gtk/options/advanced_contents_gtk.h" 5 #include "chrome/browser/gtk/options/advanced_contents_gtk.h"
6 6
7 #include <sys/types.h>
8 #include <sys/wait.h>
9
7 #include "app/l10n_util.h" 10 #include "app/l10n_util.h"
8 #include "base/basictypes.h" 11 #include "base/basictypes.h"
12 #include "base/linux_util.h"
9 #include "base/path_service.h" 13 #include "base/path_service.h"
14 #include "base/process_util.h"
10 #include "chrome/browser/browser_list.h" 15 #include "chrome/browser/browser_list.h"
11 #include "chrome/browser/browser_process.h" 16 #include "chrome/browser/browser_process.h"
12 #include "chrome/browser/download/download_manager.h" 17 #include "chrome/browser/download/download_manager.h"
13 #include "chrome/browser/fonts_languages_window.h" 18 #include "chrome/browser/fonts_languages_window.h"
14 #include "chrome/browser/gtk/gtk_chrome_link_button.h" 19 #include "chrome/browser/gtk/gtk_chrome_link_button.h"
15 #include "chrome/browser/gtk/options/options_layout_gtk.h" 20 #include "chrome/browser/gtk/options/options_layout_gtk.h"
16 #include "chrome/browser/net/dns_global.h" 21 #include "chrome/browser/net/dns_global.h"
17 #include "chrome/browser/options_page_base.h" 22 #include "chrome/browser/options_page_base.h"
18 #include "chrome/browser/options_util.h" 23 #include "chrome/browser/options_util.h"
19 #include "chrome/browser/profile.h" 24 #include "chrome/browser/profile.h"
20 #include "chrome/browser/safe_browsing/safe_browsing_service.h" 25 #include "chrome/browser/safe_browsing/safe_browsing_service.h"
21 #include "chrome/common/chrome_paths.h" 26 #include "chrome/common/chrome_paths.h"
22 #include "chrome/common/gtk_util.h" 27 #include "chrome/common/gtk_util.h"
23 #include "chrome/common/pref_member.h" 28 #include "chrome/common/pref_member.h"
24 #include "chrome/common/pref_names.h" 29 #include "chrome/common/pref_names.h"
30 #include "chrome/common/process_watcher.h"
25 #include "grit/chromium_strings.h" 31 #include "grit/chromium_strings.h"
26 #include "grit/generated_resources.h" 32 #include "grit/generated_resources.h"
27 #include "grit/locale_settings.h" 33 #include "grit/locale_settings.h"
28 #include "net/base/cookie_policy.h" 34 #include "net/base/cookie_policy.h"
29 35
30 namespace { 36 namespace {
31 37
38 // Command used to configure the gconf proxy settings.
39 const char kProxyConfigBinary[] = "gnome-network-preferences";
40
32 // The pixel width we wrap labels at. 41 // The pixel width we wrap labels at.
33 // TODO(evanm): make the labels wrap at the appropriate width. 42 // TODO(evanm): make the labels wrap at the appropriate width.
34 const int kWrapWidth = 475; 43 const int kWrapWidth = 475;
35 44
36 GtkWidget* CreateWrappedLabel(int string_id) { 45 GtkWidget* CreateWrappedLabel(int string_id) {
37 GtkWidget* label = gtk_label_new( 46 GtkWidget* label = gtk_label_new(
38 l10n_util::GetStringUTF8(string_id).c_str()); 47 l10n_util::GetStringUTF8(string_id).c_str());
39 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); 48 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
40 gtk_widget_set_size_request(label, kWrapWidth, -1); 49 gtk_widget_set_size_request(label, kWrapWidth, -1);
41 return label; 50 return label;
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 class NetworkSection : public OptionsPageBase { 252 class NetworkSection : public OptionsPageBase {
244 public: 253 public:
245 explicit NetworkSection(Profile* profile); 254 explicit NetworkSection(Profile* profile);
246 virtual ~NetworkSection() {} 255 virtual ~NetworkSection() {}
247 256
248 GtkWidget* get_page_widget() const { 257 GtkWidget* get_page_widget() const {
249 return page_; 258 return page_;
250 } 259 }
251 260
252 private: 261 private:
262 // The callback functions for invoking the proxy config dialog.
263 static void OnChangeProxiesButtonClicked(GtkButton *button,
264 NetworkSection* section);
265
253 // The widget containing the options for this section. 266 // The widget containing the options for this section.
254 GtkWidget* page_; 267 GtkWidget* page_;
255 268
256 DISALLOW_COPY_AND_ASSIGN(NetworkSection); 269 DISALLOW_COPY_AND_ASSIGN(NetworkSection);
257 }; 270 };
258 271
259 NetworkSection::NetworkSection(Profile* profile) 272 NetworkSection::NetworkSection(Profile* profile)
260 : OptionsPageBase(profile) { 273 : OptionsPageBase(profile) {
261 page_ = gtk_vbox_new(FALSE, gtk_util::kControlSpacing); 274 page_ = gtk_vbox_new(FALSE, gtk_util::kControlSpacing);
262 gtk_box_pack_start(GTK_BOX(page_), gtk_label_new("TODO network options"), 275
276 GtkWidget* proxy_description_label = CreateWrappedLabel(
277 IDS_OPTIONS_PROXIES_LABEL);
278 gtk_misc_set_alignment(GTK_MISC(proxy_description_label), 0, 0);
279 gtk_box_pack_start(GTK_BOX(page_), proxy_description_label,
280 FALSE, FALSE, 0);
281
282 GtkWidget* change_proxies_button = gtk_button_new_with_label(
283 l10n_util::GetStringUTF8(
284 IDS_OPTIONS_PROXIES_CONFIGURE_BUTTON).c_str());
285 g_signal_connect(change_proxies_button, "clicked",
286 G_CALLBACK(OnChangeProxiesButtonClicked), this);
287 // Stick it in an hbox so it doesn't expand to the whole width.
288 GtkWidget* button_hbox = gtk_hbox_new(FALSE, 0);
289 gtk_box_pack_start(GTK_BOX(button_hbox),
290 change_proxies_button,
291 FALSE, FALSE, 0);
292 gtk_box_pack_start(GTK_BOX(page_),
293 OptionsLayoutBuilderGtk::IndentWidget(button_hbox),
263 FALSE, FALSE, 0); 294 FALSE, FALSE, 0);
264 } 295 }
265 296
297 // static
298 void NetworkSection::OnChangeProxiesButtonClicked(GtkButton *button,
299 NetworkSection* section) {
300 section->UserMetricsRecordAction(L"Options_ChangeProxies", NULL);
301
302 scoped_ptr<base::EnvironmentVariableGetter> env_getter(
303 base::EnvironmentVariableGetter::Create());
304 if (base::UseGnomeForSettings(env_getter.get())) {
305 std::vector<std::string> argv;
306 argv.push_back(kProxyConfigBinary);
307 base::file_handle_mapping_vector no_files;
308 base::environment_vector env;
309 base::ProcessHandle handle;
310 env.push_back(std::make_pair("GTK_PATH",
311 getenv("CHROMIUM_SAVED_GTK_PATH")));
312 if (!base::LaunchApp(argv, env, no_files, false, &handle)) {
313 LOG(ERROR) << "OpenProxyConfigDialogTask failed";
314 return;
315 }
316 ProcessWatcher::EnsureProcessGetsReaped(handle);
317 } else {
318 BrowserList::GetLastActive()->
319 OpenURL(GURL(l10n_util::GetStringUTF8(IDS_LINUX_PROXY_CONFIG_URL)),
320 GURL(), NEW_FOREGROUND_TAB, PageTransition::LINK);
321 }
322 }
323
266 /////////////////////////////////////////////////////////////////////////////// 324 ///////////////////////////////////////////////////////////////////////////////
267 // PrivacySection 325 // PrivacySection
268 326
269 class PrivacySection : public OptionsPageBase { 327 class PrivacySection : public OptionsPageBase {
270 public: 328 public:
271 explicit PrivacySection(Profile* profile); 329 explicit PrivacySection(Profile* profile);
272 virtual ~PrivacySection() {} 330 virtual ~PrivacySection() {}
273 331
274 GtkWidget* get_page_widget() const { 332 GtkWidget* get_page_widget() const {
275 return page_; 333 return page_;
(...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after
760 l10n_util::GetStringUTF8(IDS_OPTIONS_ADVANCED_SECTION_TITLE_CONTENT), 818 l10n_util::GetStringUTF8(IDS_OPTIONS_ADVANCED_SECTION_TITLE_CONTENT),
761 web_content_section_->get_page_widget(), false); 819 web_content_section_->get_page_widget(), false);
762 820
763 security_section_.reset(new SecuritySection(profile_)); 821 security_section_.reset(new SecuritySection(profile_));
764 options_builder.AddOptionGroup( 822 options_builder.AddOptionGroup(
765 l10n_util::GetStringUTF8(IDS_OPTIONS_ADVANCED_SECTION_TITLE_SECURITY), 823 l10n_util::GetStringUTF8(IDS_OPTIONS_ADVANCED_SECTION_TITLE_SECURITY),
766 security_section_->get_page_widget(), false); 824 security_section_->get_page_widget(), false);
767 825
768 page_ = options_builder.get_page_widget(); 826 page_ = options_builder.get_page_widget();
769 } 827 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698