OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "components/data_reduction_proxy/core/browser/data_reduction_proxy_conf
ig.h" | 5 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_conf
ig.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <utility> | 10 #include <utility> |
(...skipping 951 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
962 | 962 |
963 accuracy_histogram->Add(accuracy); | 963 accuracy_histogram->Add(accuracy); |
964 } | 964 } |
965 | 965 |
966 bool DataReductionProxyConfig::IsEffectiveConnectionTypeSlowerThanThreshold( | 966 bool DataReductionProxyConfig::IsEffectiveConnectionTypeSlowerThanThreshold( |
967 net::EffectiveConnectionType effective_connection_type) const { | 967 net::EffectiveConnectionType effective_connection_type) const { |
968 return effective_connection_type >= net::EFFECTIVE_CONNECTION_TYPE_OFFLINE && | 968 return effective_connection_type >= net::EFFECTIVE_CONNECTION_TYPE_OFFLINE && |
969 effective_connection_type <= lofi_effective_connection_type_threshold_; | 969 effective_connection_type <= lofi_effective_connection_type_threshold_; |
970 } | 970 } |
971 | 971 |
972 bool DataReductionProxyConfig::ShouldEnableLoFiMode( | 972 bool DataReductionProxyConfig::ShouldEnableLoFi( |
973 const net::URLRequest& request) { | 973 const net::URLRequest& request) { |
974 DCHECK(thread_checker_.CalledOnValidThread()); | 974 DCHECK(thread_checker_.CalledOnValidThread()); |
975 DCHECK((request.load_flags() & net::LOAD_MAIN_FRAME_DEPRECATED) != 0); | 975 DCHECK((request.load_flags() & net::LOAD_MAIN_FRAME_DEPRECATED) != 0); |
976 DCHECK(!request.url().SchemeIsCryptographic()); | 976 DCHECK(!request.url().SchemeIsCryptographic()); |
977 | 977 |
978 net::NetworkQualityEstimator* network_quality_estimator; | 978 net::NetworkQualityEstimator* network_quality_estimator; |
979 network_quality_estimator = | 979 network_quality_estimator = |
980 request.context() ? request.context()->network_quality_estimator() | 980 request.context() ? request.context()->network_quality_estimator() |
981 : nullptr; | 981 : nullptr; |
982 | 982 |
983 bool enable_lofi = ShouldEnableLoFiModeInternal(network_quality_estimator); | 983 bool enable_lofi = ShouldEnableLoFiInternal(network_quality_estimator); |
984 | 984 |
985 if (params::IsLoFiSlowConnectionsOnlyViaFlags() || | 985 if (params::IsLoFiSlowConnectionsOnlyViaFlags() || |
986 params::IsIncludedInLoFiEnabledFieldTrial()) { | 986 params::IsIncludedInLoFiEnabledFieldTrial()) { |
987 RecordAutoLoFiRequestHeaderStateChange( | 987 RecordAutoLoFiRequestHeaderStateChange( |
988 connection_type_, previous_state_lofi_on_, enable_lofi); | 988 connection_type_, previous_state_lofi_on_, enable_lofi); |
989 previous_state_lofi_on_ = enable_lofi; | 989 previous_state_lofi_on_ = enable_lofi; |
990 } | 990 } |
991 | 991 |
992 return enable_lofi; | 992 return enable_lofi; |
993 } | 993 } |
994 | 994 |
| 995 bool DataReductionProxyConfig::ShouldEnableLitePages( |
| 996 const net::URLRequest& request) { |
| 997 DCHECK(thread_checker_.CalledOnValidThread()); |
| 998 DCHECK((request.load_flags() & net::LOAD_MAIN_FRAME_DEPRECATED) != 0); |
| 999 DCHECK(!request.url().SchemeIsCryptographic()); |
| 1000 |
| 1001 return ShouldEnableLitePagesInternal( |
| 1002 request.context() ? request.context()->network_quality_estimator() |
| 1003 : nullptr); |
| 1004 } |
| 1005 |
995 bool DataReductionProxyConfig::enabled_by_user_and_reachable() const { | 1006 bool DataReductionProxyConfig::enabled_by_user_and_reachable() const { |
996 DCHECK(thread_checker_.CalledOnValidThread()); | 1007 DCHECK(thread_checker_.CalledOnValidThread()); |
997 return enabled_by_user_ && !unreachable_; | 1008 return enabled_by_user_ && !unreachable_; |
998 } | 1009 } |
999 | 1010 |
1000 bool DataReductionProxyConfig::ShouldEnableLoFiModeInternal( | 1011 bool DataReductionProxyConfig::ShouldEnableLoFiInternal( |
1001 const net::NetworkQualityEstimator* network_quality_estimator) { | 1012 const net::NetworkQualityEstimator* network_quality_estimator) { |
1002 DCHECK(thread_checker_.CalledOnValidThread()); | 1013 DCHECK(thread_checker_.CalledOnValidThread()); |
1003 | 1014 |
1004 last_query_ = GetTicksNow(); | 1015 last_query_ = GetTicksNow(); |
1005 network_quality_at_last_query_ = NETWORK_QUALITY_AT_LAST_QUERY_UNKNOWN; | 1016 network_quality_at_last_query_ = NETWORK_QUALITY_AT_LAST_QUERY_UNKNOWN; |
1006 | 1017 |
1007 // If Lo-Fi has been turned off, its status can't change. | 1018 // If Lo-Fi has been turned off, its status can't change. |
1008 if (lofi_off_) | 1019 if (lofi_off_) |
1009 return false; | 1020 return false; |
1010 | 1021 |
1011 if (params::IsLoFiAlwaysOnViaFlags()) | 1022 if (params::IsLoFiAlwaysOnViaFlags()) |
1012 return true; | 1023 return true; |
1013 | 1024 |
1014 if (params::IsLoFiCellularOnlyViaFlags()) { | 1025 if (params::IsLoFiCellularOnlyViaFlags()) { |
1015 return net::NetworkChangeNotifier::IsConnectionCellular(connection_type_); | 1026 return net::NetworkChangeNotifier::IsConnectionCellular(connection_type_); |
1016 } | 1027 } |
1017 | 1028 |
1018 if (params::IsLoFiSlowConnectionsOnlyViaFlags() || | 1029 if (params::IsLoFiSlowConnectionsOnlyViaFlags() || |
1019 params::IsIncludedInLoFiEnabledFieldTrial() || | 1030 params::IsIncludedInLoFiEnabledFieldTrial() || |
1020 params::IsIncludedInLoFiControlFieldTrial()) { | 1031 params::IsIncludedInLoFiControlFieldTrial()) { |
1021 return IsNetworkQualityProhibitivelySlow(network_quality_estimator); | 1032 return IsNetworkQualityProhibitivelySlow(network_quality_estimator); |
1022 } | 1033 } |
1023 | 1034 |
1024 // If Lo-Fi is not enabled through command line and the user is not in | 1035 // If Lo-Fi is not enabled through command line and the user is not in |
1025 // Lo-Fi field trials, set Lo-Fi to off. | 1036 // Lo-Fi field trials, set Lo-Fi to off. |
1026 lofi_off_ = true; | 1037 lofi_off_ = true; |
1027 return false; | 1038 return false; |
1028 } | 1039 } |
1029 | 1040 |
| 1041 bool DataReductionProxyConfig::ShouldEnableLitePagesInternal( |
| 1042 const net::NetworkQualityEstimator* network_quality_estimator) { |
| 1043 DCHECK(thread_checker_.CalledOnValidThread()); |
| 1044 |
| 1045 // If Lo-Fi has been turned off, its status can't change. This Lo-Fi bit will |
| 1046 // be removed when Lo-Fi and Lite Pages are moved over to using the Previews |
| 1047 // blacklist. |
| 1048 if (lofi_off_) |
| 1049 return false; |
| 1050 |
| 1051 if (params::IsLoFiAlwaysOnViaFlags() && params::AreLitePagesEnabledViaFlags()) |
| 1052 return true; |
| 1053 |
| 1054 if (params::IsLoFiCellularOnlyViaFlags() && |
| 1055 params::AreLitePagesEnabledViaFlags()) { |
| 1056 return net::NetworkChangeNotifier::IsConnectionCellular( |
| 1057 net::NetworkChangeNotifier::GetConnectionType()); |
| 1058 } |
| 1059 |
| 1060 if ((params::IsLoFiSlowConnectionsOnlyViaFlags() && |
| 1061 params::AreLitePagesEnabledViaFlags()) || |
| 1062 params::IsIncludedInLitePageFieldTrial() || |
| 1063 params::IsIncludedInLoFiControlFieldTrial()) { |
| 1064 return IsNetworkQualityProhibitivelySlow(network_quality_estimator); |
| 1065 } |
| 1066 |
| 1067 return false; |
| 1068 } |
| 1069 |
1030 void DataReductionProxyConfig::GetNetworkList( | 1070 void DataReductionProxyConfig::GetNetworkList( |
1031 net::NetworkInterfaceList* interfaces, | 1071 net::NetworkInterfaceList* interfaces, |
1032 int policy) { | 1072 int policy) { |
1033 net::GetNetworkList(interfaces, policy); | 1073 net::GetNetworkList(interfaces, policy); |
1034 } | 1074 } |
1035 | 1075 |
1036 const std::vector<base::TimeDelta>& | 1076 const std::vector<base::TimeDelta>& |
1037 DataReductionProxyConfig::GetLofiAccuracyRecordingIntervals() const { | 1077 DataReductionProxyConfig::GetLofiAccuracyRecordingIntervals() const { |
1038 DCHECK(thread_checker_.CalledOnValidThread()); | 1078 DCHECK(thread_checker_.CalledOnValidThread()); |
1039 return lofi_accuracy_recording_intervals_; | 1079 return lofi_accuracy_recording_intervals_; |
(...skipping 20 matching lines...) Expand all Loading... |
1060 DataReductionProxyConfig::GetProxiesForHttp() const { | 1100 DataReductionProxyConfig::GetProxiesForHttp() const { |
1061 DCHECK(thread_checker_.CalledOnValidThread()); | 1101 DCHECK(thread_checker_.CalledOnValidThread()); |
1062 | 1102 |
1063 if (!enabled_by_user_) | 1103 if (!enabled_by_user_) |
1064 return std::vector<DataReductionProxyServer>(); | 1104 return std::vector<DataReductionProxyServer>(); |
1065 | 1105 |
1066 return config_values_->proxies_for_http(); | 1106 return config_values_->proxies_for_http(); |
1067 } | 1107 } |
1068 | 1108 |
1069 } // namespace data_reduction_proxy | 1109 } // namespace data_reduction_proxy |
OLD | NEW |