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

Side by Side Diff: chromeos/network/network_state_handler.cc

Issue 979183003: Fix logic for default network notification (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@issue_432404_default_network_0
Patch Set: . Created 5 years, 9 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 | « no previous file | no next file » | 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 "chromeos/network/network_state_handler.h" 5 #include "chromeos/network/network_state_handler.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/format_macros.h" 8 #include "base/format_macros.h"
9 #include "base/guid.h" 9 #include "base/guid.h"
10 #include "base/json/json_string_value_serializer.h" 10 #include "base/json/json_string_value_serializer.h"
(...skipping 746 matching lines...) Expand 10 before | Expand all | Expand 10 after
757 757
758 void NetworkStateHandler::DefaultNetworkServiceChanged( 758 void NetworkStateHandler::DefaultNetworkServiceChanged(
759 const std::string& service_path) { 759 const std::string& service_path) {
760 // Shill uses '/' for empty service path values; check explicitly for that. 760 // Shill uses '/' for empty service path values; check explicitly for that.
761 const char* kEmptyServicePath = "/"; 761 const char* kEmptyServicePath = "/";
762 std::string new_service_path = 762 std::string new_service_path =
763 (service_path != kEmptyServicePath) ? service_path : ""; 763 (service_path != kEmptyServicePath) ? service_path : "";
764 if (new_service_path == default_network_path_) 764 if (new_service_path == default_network_path_)
765 return; 765 return;
766 766
767 default_network_path_ = service_path; 767 default_network_path_ = service_path;
pneubeck (no reviews) 2015/03/12 09:57:48 Not that it is affecting this CL, but just a remin
stevenjb 2015/03/12 16:42:28 Yes, that is true. I've limited the notifications
768 NET_LOG_EVENT("DefaultNetworkServiceChanged:", default_network_path_); 768 NET_LOG_EVENT("DefaultNetworkServiceChanged:", default_network_path_);
769 const NetworkState* network = nullptr; 769 const NetworkState* network = nullptr;
770 if (!default_network_path_.empty()) { 770 if (!default_network_path_.empty()) {
771 network = GetNetworkState(default_network_path_); 771 network = GetNetworkState(default_network_path_);
772 if (!network) { 772 if (!network) {
773 // If NetworkState is not available yet, do not notify observers here, 773 // If NetworkState is not available yet, do not notify observers here,
774 // they will be notified when the state is received. 774 // they will be notified when the state is received.
775 NET_LOG_DEBUG("Default NetworkState not available", 775 NET_LOG(EVENT) "Default NetworkState not available: "
pneubeck (no reviews) 2015/03/12 09:57:48 missing '<<' after NET_LOG(EVENT) ? how can this
stevenjb 2015/03/12 16:42:28 It doesn't. Last second change to use the same LOG
776 default_network_path_); 776 << default_network_path_;
777 return; 777 return;
778 } 778 }
779 } 779 }
780 if (network && !network->IsConnectedState()) { 780 if (network && !network->IsConnectedState()) {
781 NET_LOG_ERROR( 781 NET_LOG(EVENT) << "DefaultNetwork is not connected: " << GetLogName(network)
782 "DefaultNetwork is not connected: " + network->connection_state(), 782 << ": " << network->connection_state();
783 network->path()); 783 // Do not notify observers here, the notification will occur when the
pneubeck (no reviews) 2015/03/12 09:57:48 is it worth logging an error here if the state is
stevenjb 2015/03/12 16:42:28 Yes, done.
784 // connection state changes.
Paul Stewart 2015/03/11 23:29:03 Awesome. This might fix some page load attempts b
stevenjb 2015/03/12 16:42:28 I hope so!
785 return;
784 } 786 }
785 NotifyDefaultNetworkChanged(network); 787 NotifyDefaultNetworkChanged(network);
786 } 788 }
787 789
788 //------------------------------------------------------------------------------ 790 //------------------------------------------------------------------------------
789 // Private methods 791 // Private methods
790 792
791 void NetworkStateHandler::UpdateGuid(NetworkState* network) { 793 void NetworkStateHandler::UpdateGuid(NetworkState* network) {
792 std::string specifier = network->GetSpecifier(); 794 std::string specifier = network->GetSpecifier();
793 DCHECK(!specifier.empty()); 795 DCHECK(!specifier.empty());
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
860 return &device_list_; 862 return &device_list_;
861 } 863 }
862 NOTREACHED(); 864 NOTREACHED();
863 return nullptr; 865 return nullptr;
864 } 866 }
865 867
866 void NetworkStateHandler::OnNetworkConnectionStateChanged( 868 void NetworkStateHandler::OnNetworkConnectionStateChanged(
867 NetworkState* network) { 869 NetworkState* network) {
868 SCOPED_NET_LOG_IF_SLOW(); 870 SCOPED_NET_LOG_IF_SLOW();
869 DCHECK(network); 871 DCHECK(network);
870 std::string event = "NetworkConnectionStateChanged"; 872 bool notify_default = false;
871 if (network->path() == default_network_path_) { 873 if (network->path() == default_network_path_) {
872 event = "Default" + event; 874 if (network->IsConnectedState()) {
873 if (!network->IsConnectedState()) { 875 notify_default = true;
874 NET_LOG_EVENT( 876 } else if (network->IsConnectingState()) {
875 "DefaultNetwork is not connected: " + network->connection_state(), 877 // Wait until the network is actually connected to notify that the default
876 network->path()); 878 // network changed.
879 NET_LOG(EVENT) << "Default network is not connected: "
880 << GetLogName(network)
881 << "State: " << network->connection_state();
882 } else {
883 NET_LOG(ERROR) << "Default network in unexpected state: "
884 << GetLogName(network)
885 << "State: " << network->connection_state();
877 default_network_path_.clear(); 886 default_network_path_.clear();
878 SortNetworkList(); 887 SortNetworkList();
879 NotifyDefaultNetworkChanged(nullptr); 888 NotifyDefaultNetworkChanged(nullptr);
880 } 889 }
881 } 890 }
882 NET_LOG_EVENT("NOTIFY:" + event + ": " + network->connection_state(), 891 std::string desc = "NetworkConnectionStateChanged";
883 GetLogName(network)); 892 if (notify_default)
pneubeck (no reviews) 2015/03/12 09:57:48 the log message should always use the prefix 'Defa
stevenjb 2015/03/12 16:42:28 My intention is to have the log match the *notific
pneubeck (no reviews) 2015/03/12 19:40:09 ok, makes sense.
893 desc = "Default" + desc;
894 NET_LOG(EVENT) << "NOTIFY: " << desc << ": " << GetLogName(network) << ": "
895 << network->connection_state();
884 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_, 896 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_,
885 NetworkConnectionStateChanged(network)); 897 NetworkConnectionStateChanged(network));
886 if (network->path() == default_network_path_) 898 if (notify_default)
887 NotifyDefaultNetworkChanged(network); 899 NotifyDefaultNetworkChanged(network);
888 } 900 }
889 901
890 void NetworkStateHandler::NotifyDefaultNetworkChanged( 902 void NetworkStateHandler::NotifyDefaultNetworkChanged(
891 const NetworkState* default_network) { 903 const NetworkState* default_network) {
892 SCOPED_NET_LOG_IF_SLOW(); 904 SCOPED_NET_LOG_IF_SLOW();
893 NET_LOG_EVENT("NOTIFY:DefaultNetworkChanged", GetLogName(default_network)); 905 NET_LOG_EVENT("NOTIFY:DefaultNetworkChanged", GetLogName(default_network));
894 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_, 906 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_,
895 DefaultNetworkChanged(default_network)); 907 DefaultNetworkChanged(default_network));
896 } 908 }
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
956 if (type.MatchesType(shill::kTypeBluetooth)) 968 if (type.MatchesType(shill::kTypeBluetooth))
957 technologies.push_back(new std::string(shill::kTypeBluetooth)); 969 technologies.push_back(new std::string(shill::kTypeBluetooth));
958 if (type.MatchesType(shill::kTypeVPN)) 970 if (type.MatchesType(shill::kTypeVPN))
959 technologies.push_back(new std::string(shill::kTypeVPN)); 971 technologies.push_back(new std::string(shill::kTypeVPN));
960 972
961 CHECK_GT(technologies.size(), 0ul); 973 CHECK_GT(technologies.size(), 0ul);
962 return technologies.Pass(); 974 return technologies.Pass();
963 } 975 }
964 976
965 } // namespace chromeos 977 } // namespace chromeos
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698