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

Unified Diff: chrome/browser/extensions/api/dial/dial_service.cc

Issue 23712002: Cleanup network type matching. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added unit tests and rebased. Created 7 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/dial/dial_service.cc
diff --git a/chrome/browser/extensions/api/dial/dial_service.cc b/chrome/browser/extensions/api/dial/dial_service.cc
index 605dfdb78d0777169fa85638aebcc229aae71817..423708bc22b0f08663fad9da87da383c7778a65a 100644
--- a/chrome/browser/extensions/api/dial/dial_service.cc
+++ b/chrome/browser/extensions/api/dial/dial_service.cc
@@ -27,6 +27,7 @@
#if defined(OS_CHROMEOS)
#include "chromeos/network/network_state.h"
#include "chromeos/network/network_state_handler.h"
+#include "chromeos/network/shill_property_util.h"
#include "third_party/cros_system_api/dbus/service_constants.h"
#endif
@@ -115,6 +116,40 @@ void GetNetworkListOnFileThread(
loop->PostTask(FROM_HERE, base::Bind(cb, list));
}
+#if defined(OS_CHROMEOS)
+IPAddressNumber GetBestBindAddressByType(
+ const chromeos::NetworkTypePattern& type) {
+ const chromeos::NetworkState* state = chromeos::NetworkHandler::Get()
+ ->network_state_handler()
+ ->ConnectedNetworkByType(type);
stevenjb 2013/09/04 20:40:39 Is this from clang-format? It's kind of weird look
pneubeck (no reviews) 2013/09/05 08:28:34 yes. I changed it to two lines.
+ IPAddressNumber bind_ip_address;
+ if (!state ||
+ !net::ParseIPLiteralToNumber(state->ip_address(), &bind_ip_address)) {
+ return IPAddressNumber();
+ }
+ if (bind_ip_address.size() != net::kIPv4AddressSize) {
+ LOG(ERROR) << "Default network is not using IPv4.";
+ return IPAddressNumber();
+ }
+
+ DVLOG(1) << "Found " << state->type() << ", " << state->name() << ":"
+ << state->ip_address();
+ return bind_ip_address;
+}
+
+// Returns the IP address of the preferred interface to bind the socket. This
+// ChromeOS version can prioritize wifi and ethernet interfaces.
+IPAddressNumber GetBestBindAddressChromeOS() {
+ IPAddressNumber bind_ip_address =
+ GetBestBindAddressByType(chromeos::NetworkTypePattern::Ethernet());
+ if (bind_ip_address.empty()) {
+ bind_ip_address =
+ GetBestBindAddressByType(chromeos::NetworkTypePattern::WiFi());
+ }
+ return bind_ip_address;
+}
+#endif
+
} // namespace
DialServiceImpl::DialServiceImpl(net::NetLog* net_log)
@@ -187,27 +222,6 @@ void DialServiceImpl::StartDiscovery() {
#endif
}
-#if defined(OS_CHROMEOS)
-IPAddressNumber DialServiceImpl::GetBestBindAddressChromeOS() {
- std::string connection_types[] =
- {flimflam::kTypeWifi, flimflam::kTypeEthernet};
- for (uint i = 0; i < arraysize(connection_types); ++i) {
- IPAddressNumber bind_ip_address;
- const chromeos::NetworkState* state =
- chromeos::NetworkHandler::Get()->network_state_handler()->
- ConnectedNetworkByType(connection_types[i]);
- if (state &&
- net::ParseIPLiteralToNumber(state->ip_address(), &bind_ip_address)) {
- DCHECK(bind_ip_address.size() == net::kIPv4AddressSize);
- DVLOG(1) << "Found " << state->type() << ", " << state->name() << ":"
- << state->ip_address();
- return bind_ip_address;
- }
- }
- return IPAddressNumber();
-}
-#endif
-
bool DialServiceImpl::BindSocketAndSendRequest(
const IPAddressNumber& bind_ip_address) {
DCHECK(thread_checker_.CalledOnValidThread());

Powered by Google App Engine
This is Rietveld 408576698