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

Side by Side Diff: chrome/browser/chromeos/proxy_config_service_impl.cc

Issue 8467012: Refactor proxy handling for ChromeOS to not go through the CrosSettings interface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed the nits. Created 9 years, 1 month 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/chromeos/proxy_config_service_impl.h" 5 #include "chrome/browser/chromeos/proxy_config_service_impl.h"
6 6
7 #include <ostream> 7 #include <ostream>
8 8
9 #include "base/json/json_value_serializer.h" 9 #include "base/json/json_value_serializer.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 11 matching lines...) Expand all
22 #include "content/public/browser/notification_service.h" 22 #include "content/public/browser/notification_service.h"
23 #include "grit/generated_resources.h" 23 #include "grit/generated_resources.h"
24 #include "ui/base/l10n/l10n_util.h" 24 #include "ui/base/l10n/l10n_util.h"
25 25
26 namespace em = enterprise_management; 26 namespace em = enterprise_management;
27 27
28 namespace chromeos { 28 namespace chromeos {
29 29
30 namespace { 30 namespace {
31 31
32 // Shoud we try to push this to base?
33 // Helper comparator functor for the find_if call in |findIfEqual|
34 template <class T>
35 class EqualsComparator{
36 public:
37 explicit EqualsComparator(const T& key) : key_(key) { }
38 bool operator() (const T& element) {
39 return element.Equals(key_);
40 }
41 private:
42 const T& key_;
43 };
44
45 // Tiny STL helper function to allow using the find_if syntax on objects that
46 // doesn't use the operator== but implement the Equals function which is the
47 // quasi standard with the coding style we have.
48 template<class InputIterator, class T>
49 InputIterator findIfEqual(InputIterator first, InputIterator last,
50 const T& key) {
51 return std::find_if(first, last, EqualsComparator<T>(key));
52 }
53
32 const char* ModeToString(ProxyConfigServiceImpl::ProxyConfig::Mode mode) { 54 const char* ModeToString(ProxyConfigServiceImpl::ProxyConfig::Mode mode) {
33 switch (mode) { 55 switch (mode) {
34 case ProxyConfigServiceImpl::ProxyConfig::MODE_DIRECT: 56 case ProxyConfigServiceImpl::ProxyConfig::MODE_DIRECT:
35 return "direct"; 57 return "direct";
36 case ProxyConfigServiceImpl::ProxyConfig::MODE_AUTO_DETECT: 58 case ProxyConfigServiceImpl::ProxyConfig::MODE_AUTO_DETECT:
37 return "auto-detect"; 59 return "auto-detect";
38 case ProxyConfigServiceImpl::ProxyConfig::MODE_PAC_SCRIPT: 60 case ProxyConfigServiceImpl::ProxyConfig::MODE_PAC_SCRIPT:
39 return "pacurl"; 61 return "pacurl";
40 case ProxyConfigServiceImpl::ProxyConfig::MODE_SINGLE_PROXY: 62 case ProxyConfigServiceImpl::ProxyConfig::MODE_SINGLE_PROXY:
41 return "single-proxy"; 63 return "single-proxy";
(...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after
464 NOTREACHED(); 486 NOTREACHED();
465 VLOG(1) << "Cannot set bypass rules for proxy mode [" 487 VLOG(1) << "Cannot set bypass rules for proxy mode ["
466 << current_ui_config_.mode << "]"; 488 << current_ui_config_.mode << "]";
467 return false; 489 return false;
468 } 490 }
469 current_ui_config_.bypass_rules = bypass_rules; 491 current_ui_config_.bypass_rules = bypass_rules;
470 OnUISetProxyConfig(); 492 OnUISetProxyConfig();
471 return true; 493 return true;
472 } 494 }
473 495
496 void ProxyConfigServiceImpl::AddNotificationCallback(base::Closure callback) {
497
498 std::vector<base::Closure>::iterator iter =
499 findIfEqual(callbacks_.begin(), callbacks_.end(), callback);
500 if (iter == callbacks_.end())
501 callbacks_.push_back(callback);
502 }
503
504 void ProxyConfigServiceImpl::RemoveNotificationCallback(
505 base::Closure callback) {
506 std::vector<base::Closure>::iterator iter =
507 findIfEqual(callbacks_.begin(), callbacks_.end(), callback);
508 if (iter != callbacks_.end())
509 callbacks_.erase(iter);
510 }
511
474 void ProxyConfigServiceImpl::OnProxyConfigChanged( 512 void ProxyConfigServiceImpl::OnProxyConfigChanged(
475 ProxyPrefs::ConfigState config_state, 513 ProxyPrefs::ConfigState config_state,
476 const net::ProxyConfig& config) { 514 const net::ProxyConfig& config) {
477 VLOG(1) << this << ": got prefs change: " << ConfigStateToString(config_state) 515 VLOG(1) << this << ": got prefs change: " << ConfigStateToString(config_state)
478 << ", mode=" << config.proxy_rules().type; 516 << ", mode=" << config.proxy_rules().type;
479 Network* network = NULL; 517 Network* network = NULL;
480 if (!active_network_.empty()) { 518 if (!active_network_.empty()) {
481 network = CrosLibrary::Get()->GetNetworkLibrary()->FindNetworkByPath( 519 network = CrosLibrary::Get()->GetNetworkLibrary()->FindNetworkByPath(
482 active_network_); 520 active_network_);
483 if (!network) 521 if (!network)
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
755 } 793 }
756 794
757 void ProxyConfigServiceImpl::OnUISetCurrentNetwork(const Network* network) { 795 void ProxyConfigServiceImpl::OnUISetCurrentNetwork(const Network* network) {
758 DetermineEffectiveConfig(network, false); 796 DetermineEffectiveConfig(network, false);
759 VLOG(1) << this << ": current ui network: " 797 VLOG(1) << this << ": current ui network: "
760 << (network->name().empty() ? 798 << (network->name().empty() ?
761 current_ui_network_ : network->name()) 799 current_ui_network_ : network->name())
762 << ", " << ModeToString(current_ui_config_.mode) 800 << ", " << ModeToString(current_ui_config_.mode)
763 << ", " << ConfigStateToString(current_ui_config_.state) 801 << ", " << ConfigStateToString(current_ui_config_.state)
764 << ", modifiable:" << current_ui_config_.user_modifiable; 802 << ", modifiable:" << current_ui_config_.user_modifiable;
803 // Notify whoever is interested in this change.
804 std::vector<base::Closure>::iterator iter = callbacks_.begin();
805 while (iter != callbacks_.end()) {
806 if (iter->is_null()) {
807 iter = callbacks_.erase(iter);
808 } else {
809 iter->Run();
810 ++iter;
811 }
812 }
765 } 813 }
766 814
767 void ProxyConfigServiceImpl::ResetUICache() { 815 void ProxyConfigServiceImpl::ResetUICache() {
768 current_ui_network_.clear(); 816 current_ui_network_.clear();
769 current_ui_config_ = ProxyConfig(); 817 current_ui_config_ = ProxyConfig();
770 } 818 }
771 819
772 } // namespace chromeos 820 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/proxy_config_service_impl.h ('k') | chrome/browser/chromeos/proxy_cros_settings_parser.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698