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

Side by Side Diff: net/base/network_interfaces_unittest.cc

Issue 1984133003: Remove Windows Vista/XP specific code from net/base (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: mmenke comments Created 4 years, 7 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 | net/base/network_interfaces_win.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/base/network_interfaces.h" 5 #include "net/base/network_interfaces.h"
6 6
7 #include <ostream> 7 #include <ostream>
8 #include <string> 8 #include <string>
9 #include <unordered_set> 9 #include <unordered_set>
10 10
(...skipping 18 matching lines...) Expand all
29 #include <netinet/in_var.h> 29 #include <netinet/in_var.h>
30 #endif // !OS_IOS 30 #endif // !OS_IOS
31 #endif // OS_MACOSX 31 #endif // OS_MACOSX
32 #endif // !OS_NACL && !OS_WIN 32 #endif // !OS_NACL && !OS_WIN
33 #include "testing/gtest/include/gtest/gtest.h" 33 #include "testing/gtest/include/gtest/gtest.h"
34 #include "url/gurl.h" 34 #include "url/gurl.h"
35 35
36 #if defined(OS_WIN) 36 #if defined(OS_WIN)
37 #include <iphlpapi.h> 37 #include <iphlpapi.h>
38 #include <objbase.h> 38 #include <objbase.h>
39 #include "base/win/windows_version.h"
40 #endif // OS_WIN 39 #endif // OS_WIN
41 40
42 #if !defined(OS_MACOSX) && !defined(OS_NACL) && !defined(OS_WIN) 41 #if !defined(OS_MACOSX) && !defined(OS_NACL) && !defined(OS_WIN)
43 #include "net/base/address_tracker_linux.h" 42 #include "net/base/address_tracker_linux.h"
44 #endif // !OS_MACOSX && !OS_NACL && !OS_WIN 43 #endif // !OS_MACOSX && !OS_NACL && !OS_WIN
45 44
46 #if defined(OS_WIN) 45 #if defined(OS_WIN)
47 #include "net/base/network_interfaces_win.h" 46 #include "net/base/network_interfaces_win.h"
48 #else // OS_WIN 47 #else // OS_WIN
49 #include "net/base/network_interfaces_posix.h" 48 #include "net/base/network_interfaces_posix.h"
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 130
132 // Verify that the address is correct. 131 // Verify that the address is correct.
133 EXPECT_TRUE(it->address.IsValid()) << "Invalid address of size " 132 EXPECT_TRUE(it->address.IsValid()) << "Invalid address of size "
134 << it->address.size(); 133 << it->address.size();
135 EXPECT_FALSE(it->address.IsZero()); 134 EXPECT_FALSE(it->address.IsZero());
136 EXPECT_GT(it->prefix_length, 1u); 135 EXPECT_GT(it->prefix_length, 1u);
137 EXPECT_LE(it->prefix_length, it->address.size() * 8); 136 EXPECT_LE(it->prefix_length, it->address.size() * 8);
138 137
139 #if defined(OS_WIN) 138 #if defined(OS_WIN)
140 // On Windows |name| is NET_LUID. 139 // On Windows |name| is NET_LUID.
141 base::ScopedNativeLibrary phlpapi_lib( 140 NET_LUID luid;
142 base::FilePath(FILE_PATH_LITERAL("iphlpapi.dll"))); 141 EXPECT_EQ(static_cast<DWORD>(NO_ERROR),
143 ASSERT_TRUE(phlpapi_lib.is_valid()); 142 ConvertInterfaceIndexToLuid(it->interface_index, &luid));
144 typedef NETIO_STATUS (WINAPI* ConvertInterfaceIndexToLuid)(NET_IFINDEX, 143 GUID guid;
145 PNET_LUID); 144 EXPECT_EQ(static_cast<DWORD>(NO_ERROR),
146 ConvertInterfaceIndexToLuid interface_to_luid = 145 ConvertInterfaceLuidToGuid(&luid, &guid));
147 reinterpret_cast<ConvertInterfaceIndexToLuid>( 146 LPOLESTR name;
148 phlpapi_lib.GetFunctionPointer("ConvertInterfaceIndexToLuid")); 147 StringFromCLSID(guid, &name);
148 EXPECT_STREQ(base::UTF8ToWide(it->name).c_str(), name);
149 CoTaskMemFree(name);
149 150
150 typedef NETIO_STATUS (WINAPI* ConvertInterfaceLuidToGuid)(NET_LUID*,
151 GUID*);
152 ConvertInterfaceLuidToGuid luid_to_guid =
153 reinterpret_cast<ConvertInterfaceLuidToGuid>(
154 phlpapi_lib.GetFunctionPointer("ConvertInterfaceLuidToGuid"));
155
156 if (interface_to_luid && luid_to_guid) {
157 NET_LUID luid;
158 EXPECT_EQ(static_cast<DWORD>(NO_ERROR),
159 interface_to_luid(it->interface_index, &luid));
160 GUID guid;
161 EXPECT_EQ(static_cast<DWORD>(NO_ERROR), luid_to_guid(&luid, &guid));
162 LPOLESTR name;
163 StringFromCLSID(guid, &name);
164 EXPECT_STREQ(base::UTF8ToWide(it->name).c_str(), name);
165 CoTaskMemFree(name);
166 continue;
167 } else {
168 EXPECT_LT(base::win::GetVersion(), base::win::VERSION_VISTA);
169 EXPECT_LT(it->interface_index, 1u << 24u); // Must fit 0.x.x.x.
170 EXPECT_NE(it->interface_index, 0u); // 0 means to use default.
171 }
172 if (it->type == NetworkChangeNotifier::CONNECTION_WIFI) { 151 if (it->type == NetworkChangeNotifier::CONNECTION_WIFI) {
173 EXPECT_NE(WIFI_PHY_LAYER_PROTOCOL_NONE, GetWifiPHYLayerProtocol()); 152 EXPECT_NE(WIFI_PHY_LAYER_PROTOCOL_NONE, GetWifiPHYLayerProtocol());
174 } 153 }
mmenke 2016/05/19 15:02:37 Hrm...This code wasn't being run on non-XP systems
175 #elif !defined(OS_ANDROID) 154 #elif !defined(OS_ANDROID)
176 char name[IF_NAMESIZE]; 155 char name[IF_NAMESIZE];
177 EXPECT_TRUE(if_indextoname(it->interface_index, name)); 156 EXPECT_TRUE(if_indextoname(it->interface_index, name));
178 EXPECT_STREQ(it->name.c_str(), name); 157 EXPECT_STREQ(it->name.c_str(), name);
179 #endif 158 #endif
180 } 159 }
181 } 160 }
182 161
183 static const char ifname_em1[] = "em1"; 162 static const char ifname_em1[] = "em1";
184 #if defined(OS_WIN) 163 #if defined(OS_WIN)
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after
483 adapter_address.FirstPrefix = &adapter_prefix; 462 adapter_address.FirstPrefix = &adapter_prefix;
484 463
485 // Address of offline links should be ignored. 464 // Address of offline links should be ignored.
486 ASSERT_TRUE(FillAdapterAddress( 465 ASSERT_TRUE(FillAdapterAddress(
487 &adapter_address /* adapter_address */, ifname_em1 /* ifname */, 466 &adapter_address /* adapter_address */, ifname_em1 /* ifname */,
488 ipv6_address /* ip_address */, ipv6_prefix /* ip_netmask */, 467 ipv6_address /* ip_address */, ipv6_prefix /* ip_netmask */,
489 addresses /* sock_addrs */)); 468 addresses /* sock_addrs */));
490 adapter_address.OperStatus = IfOperStatusDown; 469 adapter_address.OperStatus = IfOperStatusDown;
491 470
492 EXPECT_TRUE(internal::GetNetworkListImpl( 471 EXPECT_TRUE(internal::GetNetworkListImpl(
493 &results, INCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES, true, &adapter_address)); 472 &results, INCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES, &adapter_address));
494 473
495 EXPECT_EQ(results.size(), 0ul); 474 EXPECT_EQ(results.size(), 0ul);
496 475
497 // Address on loopback interface should be trimmed out. 476 // Address on loopback interface should be trimmed out.
498 ASSERT_TRUE(FillAdapterAddress( 477 ASSERT_TRUE(FillAdapterAddress(
499 &adapter_address /* adapter_address */, ifname_em1 /* ifname */, 478 &adapter_address /* adapter_address */, ifname_em1 /* ifname */,
500 ipv6_local_address /* ip_address */, ipv6_prefix /* ip_netmask */, 479 ipv6_local_address /* ip_address */, ipv6_prefix /* ip_netmask */,
501 addresses /* sock_addrs */)); 480 addresses /* sock_addrs */));
502 adapter_address.IfType = IF_TYPE_SOFTWARE_LOOPBACK; 481 adapter_address.IfType = IF_TYPE_SOFTWARE_LOOPBACK;
503 482
504 EXPECT_TRUE(internal::GetNetworkListImpl( 483 EXPECT_TRUE(internal::GetNetworkListImpl(
505 &results, INCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES, true, &adapter_address)); 484 &results, INCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES, &adapter_address));
506 EXPECT_EQ(results.size(), 0ul); 485 EXPECT_EQ(results.size(), 0ul);
507 486
508 // vmware address should return by default. 487 // vmware address should return by default.
509 ASSERT_TRUE(FillAdapterAddress( 488 ASSERT_TRUE(FillAdapterAddress(
510 &adapter_address /* adapter_address */, ifname_vm /* ifname */, 489 &adapter_address /* adapter_address */, ifname_vm /* ifname */,
511 ipv6_address /* ip_address */, ipv6_prefix /* ip_netmask */, 490 ipv6_address /* ip_address */, ipv6_prefix /* ip_netmask */,
512 addresses /* sock_addrs */)); 491 addresses /* sock_addrs */));
513 EXPECT_TRUE(internal::GetNetworkListImpl( 492 EXPECT_TRUE(internal::GetNetworkListImpl(
514 &results, INCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES, true, &adapter_address)); 493 &results, INCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES, &adapter_address));
515 EXPECT_EQ(results.size(), 1ul); 494 EXPECT_EQ(results.size(), 1ul);
516 EXPECT_EQ(results[0].name, ifname_vm); 495 EXPECT_EQ(results[0].name, ifname_vm);
517 EXPECT_EQ(results[0].prefix_length, 1ul); 496 EXPECT_EQ(results[0].prefix_length, 1ul);
518 EXPECT_EQ(results[0].address, ipv6_address); 497 EXPECT_EQ(results[0].address, ipv6_address);
519 EXPECT_EQ(results[0].ip_address_attributes, IP_ADDRESS_ATTRIBUTE_NONE); 498 EXPECT_EQ(results[0].ip_address_attributes, IP_ADDRESS_ATTRIBUTE_NONE);
520 results.clear(); 499 results.clear();
521 500
522 // vmware address should be trimmed out if policy specified so. 501 // vmware address should be trimmed out if policy specified so.
523 ASSERT_TRUE(FillAdapterAddress( 502 ASSERT_TRUE(FillAdapterAddress(
524 &adapter_address /* adapter_address */, ifname_vm /* ifname */, 503 &adapter_address /* adapter_address */, ifname_vm /* ifname */,
525 ipv6_address /* ip_address */, ipv6_prefix /* ip_netmask */, 504 ipv6_address /* ip_address */, ipv6_prefix /* ip_netmask */,
526 addresses /* sock_addrs */)); 505 addresses /* sock_addrs */));
527 EXPECT_TRUE(internal::GetNetworkListImpl( 506 EXPECT_TRUE(internal::GetNetworkListImpl(
528 &results, EXCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES, true, &adapter_address)); 507 &results, EXCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES, &adapter_address));
529 EXPECT_EQ(results.size(), 0ul); 508 EXPECT_EQ(results.size(), 0ul);
530 results.clear(); 509 results.clear();
531 510
532 // Addresses with incompleted DAD should be ignored. 511 // Addresses with incompleted DAD should be ignored.
533 ASSERT_TRUE(FillAdapterAddress( 512 ASSERT_TRUE(FillAdapterAddress(
534 &adapter_address /* adapter_address */, ifname_em1 /* ifname */, 513 &adapter_address /* adapter_address */, ifname_em1 /* ifname */,
535 ipv6_address /* ip_address */, ipv6_prefix /* ip_netmask */, 514 ipv6_address /* ip_address */, ipv6_prefix /* ip_netmask */,
536 addresses /* sock_addrs */)); 515 addresses /* sock_addrs */));
537 adapter_address.FirstUnicastAddress->DadState = IpDadStateTentative; 516 adapter_address.FirstUnicastAddress->DadState = IpDadStateTentative;
538 517
539 EXPECT_TRUE(internal::GetNetworkListImpl( 518 EXPECT_TRUE(internal::GetNetworkListImpl(
540 &results, INCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES, true, &adapter_address)); 519 &results, INCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES, &adapter_address));
541 EXPECT_EQ(results.size(), 0ul); 520 EXPECT_EQ(results.size(), 0ul);
542 results.clear(); 521 results.clear();
543 522
544 // Addresses with allowed attribute IpSuffixOriginRandom should be returned 523 // Addresses with allowed attribute IpSuffixOriginRandom should be returned
545 // and attributes should be translated correctly to 524 // and attributes should be translated correctly to
546 // IP_ADDRESS_ATTRIBUTE_TEMPORARY. 525 // IP_ADDRESS_ATTRIBUTE_TEMPORARY.
547 ASSERT_TRUE(FillAdapterAddress( 526 ASSERT_TRUE(FillAdapterAddress(
548 &adapter_address /* adapter_address */, ifname_em1 /* ifname */, 527 &adapter_address /* adapter_address */, ifname_em1 /* ifname */,
549 ipv6_address /* ip_address */, ipv6_prefix /* ip_netmask */, 528 ipv6_address /* ip_address */, ipv6_prefix /* ip_netmask */,
550 addresses /* sock_addrs */)); 529 addresses /* sock_addrs */));
551 adapter_address.FirstUnicastAddress->PrefixOrigin = 530 adapter_address.FirstUnicastAddress->PrefixOrigin =
552 IpPrefixOriginRouterAdvertisement; 531 IpPrefixOriginRouterAdvertisement;
553 adapter_address.FirstUnicastAddress->SuffixOrigin = IpSuffixOriginRandom; 532 adapter_address.FirstUnicastAddress->SuffixOrigin = IpSuffixOriginRandom;
554 533
555 EXPECT_TRUE(internal::GetNetworkListImpl( 534 EXPECT_TRUE(internal::GetNetworkListImpl(
556 &results, INCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES, true, &adapter_address)); 535 &results, INCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES, &adapter_address));
557 EXPECT_EQ(results.size(), 1ul); 536 EXPECT_EQ(results.size(), 1ul);
558 EXPECT_EQ(results[0].name, ifname_em1); 537 EXPECT_EQ(results[0].name, ifname_em1);
559 EXPECT_EQ(results[0].prefix_length, 1ul); 538 EXPECT_EQ(results[0].prefix_length, 1ul);
560 EXPECT_EQ(results[0].address, ipv6_address); 539 EXPECT_EQ(results[0].address, ipv6_address);
561 EXPECT_EQ(results[0].ip_address_attributes, IP_ADDRESS_ATTRIBUTE_TEMPORARY); 540 EXPECT_EQ(results[0].ip_address_attributes, IP_ADDRESS_ATTRIBUTE_TEMPORARY);
562 results.clear(); 541 results.clear();
563 542
564 // Addresses with preferred lifetime 0 should be returned and 543 // Addresses with preferred lifetime 0 should be returned and
565 // attributes should be translated correctly to 544 // attributes should be translated correctly to
566 // IP_ADDRESS_ATTRIBUTE_DEPRECATED. 545 // IP_ADDRESS_ATTRIBUTE_DEPRECATED.
567 ASSERT_TRUE(FillAdapterAddress( 546 ASSERT_TRUE(FillAdapterAddress(
568 &adapter_address /* adapter_address */, ifname_em1 /* ifname */, 547 &adapter_address /* adapter_address */, ifname_em1 /* ifname */,
569 ipv6_address /* ip_address */, ipv6_prefix /* ip_netmask */, 548 ipv6_address /* ip_address */, ipv6_prefix /* ip_netmask */,
570 addresses /* sock_addrs */)); 549 addresses /* sock_addrs */));
571 adapter_address.FirstUnicastAddress->PreferredLifetime = 0; 550 adapter_address.FirstUnicastAddress->PreferredLifetime = 0;
572 adapter_address.FriendlyName = const_cast<PWCHAR>(L"FriendlyInterfaceName"); 551 adapter_address.FriendlyName = const_cast<PWCHAR>(L"FriendlyInterfaceName");
573 EXPECT_TRUE(internal::GetNetworkListImpl( 552 EXPECT_TRUE(internal::GetNetworkListImpl(
574 &results, INCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES, true, &adapter_address)); 553 &results, INCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES, &adapter_address));
575 EXPECT_EQ(results.size(), 1ul); 554 EXPECT_EQ(results.size(), 1ul);
576 EXPECT_EQ(results[0].friendly_name, "FriendlyInterfaceName"); 555 EXPECT_EQ(results[0].friendly_name, "FriendlyInterfaceName");
577 EXPECT_EQ(results[0].name, ifname_em1); 556 EXPECT_EQ(results[0].name, ifname_em1);
578 EXPECT_EQ(results[0].prefix_length, 1ul); 557 EXPECT_EQ(results[0].prefix_length, 1ul);
579 EXPECT_EQ(results[0].address, ipv6_address); 558 EXPECT_EQ(results[0].address, ipv6_address);
580 EXPECT_EQ(results[0].ip_address_attributes, IP_ADDRESS_ATTRIBUTE_DEPRECATED); 559 EXPECT_EQ(results[0].ip_address_attributes, IP_ADDRESS_ATTRIBUTE_DEPRECATED);
581 results.clear(); 560 results.clear();
582 } 561 }
583 562
584 #endif // !OS_MACOSX && !OS_WIN && !OS_NACL 563 #endif // !OS_MACOSX && !OS_WIN && !OS_NACL
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
742 // We can't check the result of GetHostName() directly, since the result 721 // We can't check the result of GetHostName() directly, since the result
743 // will differ across machines. Our goal here is to simply exercise the 722 // will differ across machines. Our goal here is to simply exercise the
744 // code path, and check that things "look about right". 723 // code path, and check that things "look about right".
745 std::string hostname = GetHostName(); 724 std::string hostname = GetHostName();
746 EXPECT_FALSE(hostname.empty()); 725 EXPECT_FALSE(hostname.empty());
747 } 726 }
748 727
749 } // namespace 728 } // namespace
750 729
751 } // namespace net 730 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | net/base/network_interfaces_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698