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

Side by Side Diff: net/proxy/proxy_config_service_linux.cc

Issue 1355063004: Template methods on Timer classes instead of the classes themselves. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: timer: fixcaller Created 5 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 unified diff | Download patch
« no previous file with comments | « net/proxy/dhcp_proxy_script_fetcher_win_unittest.cc ('k') | net/proxy/proxy_script_decider.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "net/proxy/proxy_config_service_linux.h" 5 #include "net/proxy/proxy_config_service_linux.h"
6 6
7 #include <errno.h> 7 #include <errno.h>
8 #include <fcntl.h> 8 #include <fcntl.h>
9 #if defined(USE_GCONF) 9 #if defined(USE_GCONF)
10 #include <gconf/gconf-client.h> 10 #include <gconf/gconf-client.h>
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 201
202 #if defined(USE_GCONF) 202 #if defined(USE_GCONF)
203 // This setting getter uses gconf, as used in GNOME 2 and some GNOME 3 desktops. 203 // This setting getter uses gconf, as used in GNOME 2 and some GNOME 3 desktops.
204 class SettingGetterImplGConf : public ProxyConfigServiceLinux::SettingGetter { 204 class SettingGetterImplGConf : public ProxyConfigServiceLinux::SettingGetter {
205 public: 205 public:
206 SettingGetterImplGConf() 206 SettingGetterImplGConf()
207 : client_(NULL), 207 : client_(NULL),
208 system_proxy_id_(0), 208 system_proxy_id_(0),
209 system_http_proxy_id_(0), 209 system_http_proxy_id_(0),
210 notify_delegate_(NULL), 210 notify_delegate_(NULL),
211 debounce_timer_(new base::OneShotTimer<SettingGetterImplGConf>()) { 211 debounce_timer_(new base::OneShotTimer()) {}
212 }
213 212
214 ~SettingGetterImplGConf() override { 213 ~SettingGetterImplGConf() override {
215 // client_ should have been released before now, from 214 // client_ should have been released before now, from
216 // Delegate::OnDestroy(), while running on the UI thread. However 215 // Delegate::OnDestroy(), while running on the UI thread. However
217 // on exiting the process, it may happen that Delegate::OnDestroy() 216 // on exiting the process, it may happen that Delegate::OnDestroy()
218 // task is left pending on the glib loop after the loop was quit, 217 // task is left pending on the glib loop after the loop was quit,
219 // and pending tasks may then be deleted without being run. 218 // and pending tasks may then be deleted without being run.
220 if (client_) { 219 if (client_) {
221 // gconf client was not cleaned up. 220 // gconf client was not cleaned up.
222 if (task_runner_->BelongsToCurrentThread()) { 221 if (task_runner_->BelongsToCurrentThread()) {
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
498 setting_getter->OnChangeNotification(); 497 setting_getter->OnChangeNotification();
499 } 498 }
500 499
501 GConfClient* client_; 500 GConfClient* client_;
502 // These ids are the values returned from gconf_client_notify_add(), which we 501 // These ids are the values returned from gconf_client_notify_add(), which we
503 // will need in order to later call gconf_client_notify_remove(). 502 // will need in order to later call gconf_client_notify_remove().
504 guint system_proxy_id_; 503 guint system_proxy_id_;
505 guint system_http_proxy_id_; 504 guint system_http_proxy_id_;
506 505
507 ProxyConfigServiceLinux::Delegate* notify_delegate_; 506 ProxyConfigServiceLinux::Delegate* notify_delegate_;
508 scoped_ptr<base::OneShotTimer<SettingGetterImplGConf> > debounce_timer_; 507 scoped_ptr<base::OneShotTimer> debounce_timer_;
509 508
510 // Task runner for the thread that we make gconf calls on. It should 509 // Task runner for the thread that we make gconf calls on. It should
511 // be the UI thread and all our methods should be called on this 510 // be the UI thread and all our methods should be called on this
512 // thread. Only for assertions. 511 // thread. Only for assertions.
513 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; 512 scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
514 513
515 DISALLOW_COPY_AND_ASSIGN(SettingGetterImplGConf); 514 DISALLOW_COPY_AND_ASSIGN(SettingGetterImplGConf);
516 }; 515 };
517 #endif // defined(USE_GCONF) 516 #endif // defined(USE_GCONF)
518 517
519 #if defined(USE_GIO) 518 #if defined(USE_GIO)
520 const char kProxyGConfSchema[] = "org.gnome.system.proxy"; 519 const char kProxyGConfSchema[] = "org.gnome.system.proxy";
521 520
522 // This setting getter uses gsettings, as used in most GNOME 3 desktops. 521 // This setting getter uses gsettings, as used in most GNOME 3 desktops.
523 class SettingGetterImplGSettings 522 class SettingGetterImplGSettings
524 : public ProxyConfigServiceLinux::SettingGetter { 523 : public ProxyConfigServiceLinux::SettingGetter {
525 public: 524 public:
526 SettingGetterImplGSettings() : 525 SettingGetterImplGSettings()
527 client_(NULL), 526 : client_(NULL),
528 http_client_(NULL), 527 http_client_(NULL),
529 https_client_(NULL), 528 https_client_(NULL),
530 ftp_client_(NULL), 529 ftp_client_(NULL),
531 socks_client_(NULL), 530 socks_client_(NULL),
532 notify_delegate_(NULL), 531 notify_delegate_(NULL),
533 debounce_timer_(new base::OneShotTimer<SettingGetterImplGSettings>()) { 532 debounce_timer_(new base::OneShotTimer()) {}
534 }
535 533
536 ~SettingGetterImplGSettings() override { 534 ~SettingGetterImplGSettings() override {
537 // client_ should have been released before now, from 535 // client_ should have been released before now, from
538 // Delegate::OnDestroy(), while running on the UI thread. However 536 // Delegate::OnDestroy(), while running on the UI thread. However
539 // on exiting the process, it may happen that 537 // on exiting the process, it may happen that
540 // Delegate::OnDestroy() task is left pending on the glib loop 538 // Delegate::OnDestroy() task is left pending on the glib loop
541 // after the loop was quit, and pending tasks may then be deleted 539 // after the loop was quit, and pending tasks may then be deleted
542 // without being run. 540 // without being run.
543 if (client_) { 541 if (client_) {
544 // gconf client was not cleaned up. 542 // gconf client was not cleaned up.
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
769 reinterpret_cast<SettingGetterImplGSettings*>(user_data); 767 reinterpret_cast<SettingGetterImplGSettings*>(user_data);
770 setting_getter->OnChangeNotification(); 768 setting_getter->OnChangeNotification();
771 } 769 }
772 770
773 GSettings* client_; 771 GSettings* client_;
774 GSettings* http_client_; 772 GSettings* http_client_;
775 GSettings* https_client_; 773 GSettings* https_client_;
776 GSettings* ftp_client_; 774 GSettings* ftp_client_;
777 GSettings* socks_client_; 775 GSettings* socks_client_;
778 ProxyConfigServiceLinux::Delegate* notify_delegate_; 776 ProxyConfigServiceLinux::Delegate* notify_delegate_;
779 scoped_ptr<base::OneShotTimer<SettingGetterImplGSettings> > debounce_timer_; 777 scoped_ptr<base::OneShotTimer> debounce_timer_;
780 778
781 // Task runner for the thread that we make gsettings calls on. It should 779 // Task runner for the thread that we make gsettings calls on. It should
782 // be the UI thread and all our methods should be called on this 780 // be the UI thread and all our methods should be called on this
783 // thread. Only for assertions. 781 // thread. Only for assertions.
784 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; 782 scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
785 783
786 LibGioLoader libgio_loader_; 784 LibGioLoader libgio_loader_;
787 785
788 DISALLOW_COPY_AND_ASSIGN(SettingGetterImplGSettings); 786 DISALLOW_COPY_AND_ASSIGN(SettingGetterImplGSettings);
789 }; 787 };
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
855 853
856 // This is the KDE version that reads kioslaverc and simulates gconf. 854 // This is the KDE version that reads kioslaverc and simulates gconf.
857 // Doing this allows the main Delegate code, as well as the unit tests 855 // Doing this allows the main Delegate code, as well as the unit tests
858 // for it, to stay the same - and the settings map fairly well besides. 856 // for it, to stay the same - and the settings map fairly well besides.
859 class SettingGetterImplKDE : public ProxyConfigServiceLinux::SettingGetter, 857 class SettingGetterImplKDE : public ProxyConfigServiceLinux::SettingGetter,
860 public base::MessagePumpLibevent::Watcher { 858 public base::MessagePumpLibevent::Watcher {
861 public: 859 public:
862 explicit SettingGetterImplKDE(base::Environment* env_var_getter) 860 explicit SettingGetterImplKDE(base::Environment* env_var_getter)
863 : inotify_fd_(-1), 861 : inotify_fd_(-1),
864 notify_delegate_(NULL), 862 notify_delegate_(NULL),
865 debounce_timer_(new base::OneShotTimer<SettingGetterImplKDE>()), 863 debounce_timer_(new base::OneShotTimer()),
866 indirect_manual_(false), 864 indirect_manual_(false),
867 auto_no_pac_(false), 865 auto_no_pac_(false),
868 reversed_bypass_list_(false), 866 reversed_bypass_list_(false),
869 env_var_getter_(env_var_getter), 867 env_var_getter_(env_var_getter),
870 file_task_runner_(NULL) { 868 file_task_runner_(NULL) {
871 // This has to be called on the UI thread (http://crbug.com/69057). 869 // This has to be called on the UI thread (http://crbug.com/69057).
872 base::ThreadRestrictions::ScopedAllowIO allow_io; 870 base::ThreadRestrictions::ScopedAllowIO allow_io;
873 871
874 // Derive the location of the kde config dir from the environment. 872 // Derive the location of the kde config dir from the environment.
875 std::string home; 873 std::string home;
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after
1326 } 1324 }
1327 } 1325 }
1328 1326
1329 typedef std::map<StringSetting, std::string> string_map_type; 1327 typedef std::map<StringSetting, std::string> string_map_type;
1330 typedef std::map<StringListSetting, 1328 typedef std::map<StringListSetting,
1331 std::vector<std::string> > strings_map_type; 1329 std::vector<std::string> > strings_map_type;
1332 1330
1333 int inotify_fd_; 1331 int inotify_fd_;
1334 base::MessagePumpLibevent::FileDescriptorWatcher inotify_watcher_; 1332 base::MessagePumpLibevent::FileDescriptorWatcher inotify_watcher_;
1335 ProxyConfigServiceLinux::Delegate* notify_delegate_; 1333 ProxyConfigServiceLinux::Delegate* notify_delegate_;
1336 scoped_ptr<base::OneShotTimer<SettingGetterImplKDE> > debounce_timer_; 1334 scoped_ptr<base::OneShotTimer> debounce_timer_;
1337 base::FilePath kde_config_dir_; 1335 base::FilePath kde_config_dir_;
1338 bool indirect_manual_; 1336 bool indirect_manual_;
1339 bool auto_no_pac_; 1337 bool auto_no_pac_;
1340 bool reversed_bypass_list_; 1338 bool reversed_bypass_list_;
1341 // We don't own |env_var_getter_|. It's safe to hold a pointer to it, since 1339 // We don't own |env_var_getter_|. It's safe to hold a pointer to it, since
1342 // both it and us are owned by ProxyConfigServiceLinux::Delegate, and have the 1340 // both it and us are owned by ProxyConfigServiceLinux::Delegate, and have the
1343 // same lifetime. 1341 // same lifetime.
1344 base::Environment* env_var_getter_; 1342 base::Environment* env_var_getter_;
1345 1343
1346 // We cache these settings whenever we re-read the kioslaverc file. 1344 // We cache these settings whenever we re-read the kioslaverc file.
(...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after
1774 void ProxyConfigServiceLinux::RemoveObserver(Observer* observer) { 1772 void ProxyConfigServiceLinux::RemoveObserver(Observer* observer) {
1775 delegate_->RemoveObserver(observer); 1773 delegate_->RemoveObserver(observer);
1776 } 1774 }
1777 1775
1778 ProxyConfigService::ConfigAvailability 1776 ProxyConfigService::ConfigAvailability
1779 ProxyConfigServiceLinux::GetLatestProxyConfig(ProxyConfig* config) { 1777 ProxyConfigServiceLinux::GetLatestProxyConfig(ProxyConfig* config) {
1780 return delegate_->GetLatestProxyConfig(config); 1778 return delegate_->GetLatestProxyConfig(config);
1781 } 1779 }
1782 1780
1783 } // namespace net 1781 } // namespace net
OLDNEW
« no previous file with comments | « net/proxy/dhcp_proxy_script_fetcher_win_unittest.cc ('k') | net/proxy/proxy_script_decider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698