| OLD | NEW |
| 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/net_util.h" | 5 #include "net/base/net_util.h" |
| 6 | 6 |
| 7 #include <string.h> | 7 #include <string.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 | 10 |
| (...skipping 2578 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2589 EXPECT_EQ(WideToUTF16(L"8080"), | 2589 EXPECT_EQ(WideToUTF16(L"8080"), |
| 2590 formatted.substr(parsed.port.begin, parsed.port.len)); | 2590 formatted.substr(parsed.port.begin, parsed.port.len)); |
| 2591 EXPECT_EQ(WideToUTF16(L"/\x30B0/"), | 2591 EXPECT_EQ(WideToUTF16(L"/\x30B0/"), |
| 2592 formatted.substr(parsed.path.begin, parsed.path.len)); | 2592 formatted.substr(parsed.path.begin, parsed.path.len)); |
| 2593 EXPECT_EQ(WideToUTF16(L"q=\x30B0"), | 2593 EXPECT_EQ(WideToUTF16(L"q=\x30B0"), |
| 2594 formatted.substr(parsed.query.begin, parsed.query.len)); | 2594 formatted.substr(parsed.query.begin, parsed.query.len)); |
| 2595 EXPECT_EQ(WideToUTF16(L"\x30B0"), | 2595 EXPECT_EQ(WideToUTF16(L"\x30B0"), |
| 2596 formatted.substr(parsed.ref.begin, parsed.ref.len)); | 2596 formatted.substr(parsed.ref.begin, parsed.ref.len)); |
| 2597 | 2597 |
| 2598 // View-source case. | 2598 // View-source case. |
| 2599 formatted = FormatUrl( | 2599 formatted = |
| 2600 GURL("view-source:http://user:passwd@host:81/path?query#ref"), | 2600 FormatUrl(GURL("view-source:http://user:passwd@host:81/path?query#ref"), |
| 2601 "", kFormatUrlOmitUsernamePassword, UnescapeRule::NORMAL, &parsed, | 2601 std::string(), |
| 2602 NULL, NULL); | 2602 kFormatUrlOmitUsernamePassword, |
| 2603 UnescapeRule::NORMAL, |
| 2604 &parsed, |
| 2605 NULL, |
| 2606 NULL); |
| 2603 EXPECT_EQ(WideToUTF16(L"view-source:http://host:81/path?query#ref"), | 2607 EXPECT_EQ(WideToUTF16(L"view-source:http://host:81/path?query#ref"), |
| 2604 formatted); | 2608 formatted); |
| 2605 EXPECT_EQ(WideToUTF16(L"view-source:http"), | 2609 EXPECT_EQ(WideToUTF16(L"view-source:http"), |
| 2606 formatted.substr(parsed.scheme.begin, parsed.scheme.len)); | 2610 formatted.substr(parsed.scheme.begin, parsed.scheme.len)); |
| 2607 EXPECT_FALSE(parsed.username.is_valid()); | 2611 EXPECT_FALSE(parsed.username.is_valid()); |
| 2608 EXPECT_FALSE(parsed.password.is_valid()); | 2612 EXPECT_FALSE(parsed.password.is_valid()); |
| 2609 EXPECT_EQ(WideToUTF16(L"host"), | 2613 EXPECT_EQ(WideToUTF16(L"host"), |
| 2610 formatted.substr(parsed.host.begin, parsed.host.len)); | 2614 formatted.substr(parsed.host.begin, parsed.host.len)); |
| 2611 EXPECT_EQ(WideToUTF16(L"81"), | 2615 EXPECT_EQ(WideToUTF16(L"81"), |
| 2612 formatted.substr(parsed.port.begin, parsed.port.len)); | 2616 formatted.substr(parsed.port.begin, parsed.port.len)); |
| 2613 EXPECT_EQ(WideToUTF16(L"/path"), | 2617 EXPECT_EQ(WideToUTF16(L"/path"), |
| 2614 formatted.substr(parsed.path.begin, parsed.path.len)); | 2618 formatted.substr(parsed.path.begin, parsed.path.len)); |
| 2615 EXPECT_EQ(WideToUTF16(L"query"), | 2619 EXPECT_EQ(WideToUTF16(L"query"), |
| 2616 formatted.substr(parsed.query.begin, parsed.query.len)); | 2620 formatted.substr(parsed.query.begin, parsed.query.len)); |
| 2617 EXPECT_EQ(WideToUTF16(L"ref"), | 2621 EXPECT_EQ(WideToUTF16(L"ref"), |
| 2618 formatted.substr(parsed.ref.begin, parsed.ref.len)); | 2622 formatted.substr(parsed.ref.begin, parsed.ref.len)); |
| 2619 | 2623 |
| 2620 // omit http case. | 2624 // omit http case. |
| 2621 formatted = FormatUrl( | 2625 formatted = FormatUrl(GURL("http://host:8000/a?b=c#d"), |
| 2622 GURL("http://host:8000/a?b=c#d"), | 2626 std::string(), |
| 2623 "", kFormatUrlOmitHTTP, UnescapeRule::NORMAL, &parsed, NULL, NULL); | 2627 kFormatUrlOmitHTTP, |
| 2628 UnescapeRule::NORMAL, |
| 2629 &parsed, |
| 2630 NULL, |
| 2631 NULL); |
| 2624 EXPECT_EQ(WideToUTF16(L"host:8000/a?b=c#d"), formatted); | 2632 EXPECT_EQ(WideToUTF16(L"host:8000/a?b=c#d"), formatted); |
| 2625 EXPECT_FALSE(parsed.scheme.is_valid()); | 2633 EXPECT_FALSE(parsed.scheme.is_valid()); |
| 2626 EXPECT_FALSE(parsed.username.is_valid()); | 2634 EXPECT_FALSE(parsed.username.is_valid()); |
| 2627 EXPECT_FALSE(parsed.password.is_valid()); | 2635 EXPECT_FALSE(parsed.password.is_valid()); |
| 2628 EXPECT_EQ(WideToUTF16(L"host"), | 2636 EXPECT_EQ(WideToUTF16(L"host"), |
| 2629 formatted.substr(parsed.host.begin, parsed.host.len)); | 2637 formatted.substr(parsed.host.begin, parsed.host.len)); |
| 2630 EXPECT_EQ(WideToUTF16(L"8000"), | 2638 EXPECT_EQ(WideToUTF16(L"8000"), |
| 2631 formatted.substr(parsed.port.begin, parsed.port.len)); | 2639 formatted.substr(parsed.port.begin, parsed.port.len)); |
| 2632 EXPECT_EQ(WideToUTF16(L"/a"), | 2640 EXPECT_EQ(WideToUTF16(L"/a"), |
| 2633 formatted.substr(parsed.path.begin, parsed.path.len)); | 2641 formatted.substr(parsed.path.begin, parsed.path.len)); |
| 2634 EXPECT_EQ(WideToUTF16(L"b=c"), | 2642 EXPECT_EQ(WideToUTF16(L"b=c"), |
| 2635 formatted.substr(parsed.query.begin, parsed.query.len)); | 2643 formatted.substr(parsed.query.begin, parsed.query.len)); |
| 2636 EXPECT_EQ(WideToUTF16(L"d"), | 2644 EXPECT_EQ(WideToUTF16(L"d"), |
| 2637 formatted.substr(parsed.ref.begin, parsed.ref.len)); | 2645 formatted.substr(parsed.ref.begin, parsed.ref.len)); |
| 2638 | 2646 |
| 2639 // omit http starts with ftp case. | 2647 // omit http starts with ftp case. |
| 2640 formatted = FormatUrl( | 2648 formatted = FormatUrl(GURL("http://ftp.host:8000/a?b=c#d"), |
| 2641 GURL("http://ftp.host:8000/a?b=c#d"), | 2649 std::string(), |
| 2642 "", kFormatUrlOmitHTTP, UnescapeRule::NORMAL, &parsed, NULL, NULL); | 2650 kFormatUrlOmitHTTP, |
| 2651 UnescapeRule::NORMAL, |
| 2652 &parsed, |
| 2653 NULL, |
| 2654 NULL); |
| 2643 EXPECT_EQ(WideToUTF16(L"http://ftp.host:8000/a?b=c#d"), formatted); | 2655 EXPECT_EQ(WideToUTF16(L"http://ftp.host:8000/a?b=c#d"), formatted); |
| 2644 EXPECT_TRUE(parsed.scheme.is_valid()); | 2656 EXPECT_TRUE(parsed.scheme.is_valid()); |
| 2645 EXPECT_FALSE(parsed.username.is_valid()); | 2657 EXPECT_FALSE(parsed.username.is_valid()); |
| 2646 EXPECT_FALSE(parsed.password.is_valid()); | 2658 EXPECT_FALSE(parsed.password.is_valid()); |
| 2647 EXPECT_EQ(WideToUTF16(L"http"), | 2659 EXPECT_EQ(WideToUTF16(L"http"), |
| 2648 formatted.substr(parsed.scheme.begin, parsed.scheme.len)); | 2660 formatted.substr(parsed.scheme.begin, parsed.scheme.len)); |
| 2649 EXPECT_EQ(WideToUTF16(L"ftp.host"), | 2661 EXPECT_EQ(WideToUTF16(L"ftp.host"), |
| 2650 formatted.substr(parsed.host.begin, parsed.host.len)); | 2662 formatted.substr(parsed.host.begin, parsed.host.len)); |
| 2651 EXPECT_EQ(WideToUTF16(L"8000"), | 2663 EXPECT_EQ(WideToUTF16(L"8000"), |
| 2652 formatted.substr(parsed.port.begin, parsed.port.len)); | 2664 formatted.substr(parsed.port.begin, parsed.port.len)); |
| 2653 EXPECT_EQ(WideToUTF16(L"/a"), | 2665 EXPECT_EQ(WideToUTF16(L"/a"), |
| 2654 formatted.substr(parsed.path.begin, parsed.path.len)); | 2666 formatted.substr(parsed.path.begin, parsed.path.len)); |
| 2655 EXPECT_EQ(WideToUTF16(L"b=c"), | 2667 EXPECT_EQ(WideToUTF16(L"b=c"), |
| 2656 formatted.substr(parsed.query.begin, parsed.query.len)); | 2668 formatted.substr(parsed.query.begin, parsed.query.len)); |
| 2657 EXPECT_EQ(WideToUTF16(L"d"), | 2669 EXPECT_EQ(WideToUTF16(L"d"), |
| 2658 formatted.substr(parsed.ref.begin, parsed.ref.len)); | 2670 formatted.substr(parsed.ref.begin, parsed.ref.len)); |
| 2659 | 2671 |
| 2660 // omit http starts with 'f' case. | 2672 // omit http starts with 'f' case. |
| 2661 formatted = FormatUrl( | 2673 formatted = FormatUrl(GURL("http://f/"), |
| 2662 GURL("http://f/"), | 2674 std::string(), |
| 2663 "", kFormatUrlOmitHTTP, UnescapeRule::NORMAL, &parsed, NULL, NULL); | 2675 kFormatUrlOmitHTTP, |
| 2676 UnescapeRule::NORMAL, |
| 2677 &parsed, |
| 2678 NULL, |
| 2679 NULL); |
| 2664 EXPECT_EQ(WideToUTF16(L"f/"), formatted); | 2680 EXPECT_EQ(WideToUTF16(L"f/"), formatted); |
| 2665 EXPECT_FALSE(parsed.scheme.is_valid()); | 2681 EXPECT_FALSE(parsed.scheme.is_valid()); |
| 2666 EXPECT_FALSE(parsed.username.is_valid()); | 2682 EXPECT_FALSE(parsed.username.is_valid()); |
| 2667 EXPECT_FALSE(parsed.password.is_valid()); | 2683 EXPECT_FALSE(parsed.password.is_valid()); |
| 2668 EXPECT_FALSE(parsed.port.is_valid()); | 2684 EXPECT_FALSE(parsed.port.is_valid()); |
| 2669 EXPECT_TRUE(parsed.path.is_valid()); | 2685 EXPECT_TRUE(parsed.path.is_valid()); |
| 2670 EXPECT_FALSE(parsed.query.is_valid()); | 2686 EXPECT_FALSE(parsed.query.is_valid()); |
| 2671 EXPECT_FALSE(parsed.ref.is_valid()); | 2687 EXPECT_FALSE(parsed.ref.is_valid()); |
| 2672 EXPECT_EQ(WideToUTF16(L"f"), | 2688 EXPECT_EQ(WideToUTF16(L"f"), |
| 2673 formatted.substr(parsed.host.begin, parsed.host.len)); | 2689 formatted.substr(parsed.host.begin, parsed.host.len)); |
| 2674 EXPECT_EQ(WideToUTF16(L"/"), | 2690 EXPECT_EQ(WideToUTF16(L"/"), |
| 2675 formatted.substr(parsed.path.begin, parsed.path.len)); | 2691 formatted.substr(parsed.path.begin, parsed.path.len)); |
| 2676 } | 2692 } |
| 2677 | 2693 |
| 2678 // Make sure that calling FormatUrl on a GURL and then converting back to a GURL | 2694 // Make sure that calling FormatUrl on a GURL and then converting back to a GURL |
| 2679 // results in the original GURL, for each ASCII character in the path. | 2695 // results in the original GURL, for each ASCII character in the path. |
| 2680 TEST(NetUtilTest, FormatUrlRoundTripPathASCII) { | 2696 TEST(NetUtilTest, FormatUrlRoundTripPathASCII) { |
| 2681 for (unsigned char test_char = 32; test_char < 128; ++test_char) { | 2697 for (unsigned char test_char = 32; test_char < 128; ++test_char) { |
| 2682 GURL url(std::string("http://www.google.com/") + | 2698 GURL url(std::string("http://www.google.com/") + |
| 2683 static_cast<char>(test_char)); | 2699 static_cast<char>(test_char)); |
| 2684 size_t prefix_len; | 2700 size_t prefix_len; |
| 2685 base::string16 formatted = FormatUrl( | 2701 base::string16 formatted = FormatUrl(url, |
| 2686 url, "", kFormatUrlOmitUsernamePassword, UnescapeRule::NORMAL, NULL, | 2702 std::string(), |
| 2687 &prefix_len, NULL); | 2703 kFormatUrlOmitUsernamePassword, |
| 2704 UnescapeRule::NORMAL, |
| 2705 NULL, |
| 2706 &prefix_len, |
| 2707 NULL); |
| 2688 EXPECT_EQ(url.spec(), GURL(formatted).spec()); | 2708 EXPECT_EQ(url.spec(), GURL(formatted).spec()); |
| 2689 } | 2709 } |
| 2690 } | 2710 } |
| 2691 | 2711 |
| 2692 // Make sure that calling FormatUrl on a GURL and then converting back to a GURL | 2712 // Make sure that calling FormatUrl on a GURL and then converting back to a GURL |
| 2693 // results in the original GURL, for each escaped ASCII character in the path. | 2713 // results in the original GURL, for each escaped ASCII character in the path. |
| 2694 TEST(NetUtilTest, FormatUrlRoundTripPathEscaped) { | 2714 TEST(NetUtilTest, FormatUrlRoundTripPathEscaped) { |
| 2695 for (unsigned char test_char = 32; test_char < 128; ++test_char) { | 2715 for (unsigned char test_char = 32; test_char < 128; ++test_char) { |
| 2696 std::string original_url("http://www.google.com/"); | 2716 std::string original_url("http://www.google.com/"); |
| 2697 original_url.push_back('%'); | 2717 original_url.push_back('%'); |
| 2698 original_url.append(base::HexEncode(&test_char, 1)); | 2718 original_url.append(base::HexEncode(&test_char, 1)); |
| 2699 | 2719 |
| 2700 GURL url(original_url); | 2720 GURL url(original_url); |
| 2701 size_t prefix_len; | 2721 size_t prefix_len; |
| 2702 base::string16 formatted = FormatUrl( | 2722 base::string16 formatted = FormatUrl(url, |
| 2703 url, "", kFormatUrlOmitUsernamePassword, UnescapeRule::NORMAL, NULL, | 2723 std::string(), |
| 2704 &prefix_len, NULL); | 2724 kFormatUrlOmitUsernamePassword, |
| 2725 UnescapeRule::NORMAL, |
| 2726 NULL, |
| 2727 &prefix_len, |
| 2728 NULL); |
| 2705 EXPECT_EQ(url.spec(), GURL(formatted).spec()); | 2729 EXPECT_EQ(url.spec(), GURL(formatted).spec()); |
| 2706 } | 2730 } |
| 2707 } | 2731 } |
| 2708 | 2732 |
| 2709 // Make sure that calling FormatUrl on a GURL and then converting back to a GURL | 2733 // Make sure that calling FormatUrl on a GURL and then converting back to a GURL |
| 2710 // results in the original GURL, for each ASCII character in the query. | 2734 // results in the original GURL, for each ASCII character in the query. |
| 2711 TEST(NetUtilTest, FormatUrlRoundTripQueryASCII) { | 2735 TEST(NetUtilTest, FormatUrlRoundTripQueryASCII) { |
| 2712 for (unsigned char test_char = 32; test_char < 128; ++test_char) { | 2736 for (unsigned char test_char = 32; test_char < 128; ++test_char) { |
| 2713 GURL url(std::string("http://www.google.com/?") + | 2737 GURL url(std::string("http://www.google.com/?") + |
| 2714 static_cast<char>(test_char)); | 2738 static_cast<char>(test_char)); |
| 2715 size_t prefix_len; | 2739 size_t prefix_len; |
| 2716 base::string16 formatted = FormatUrl( | 2740 base::string16 formatted = FormatUrl(url, |
| 2717 url, "", kFormatUrlOmitUsernamePassword, UnescapeRule::NORMAL, NULL, | 2741 std::string(), |
| 2718 &prefix_len, NULL); | 2742 kFormatUrlOmitUsernamePassword, |
| 2743 UnescapeRule::NORMAL, |
| 2744 NULL, |
| 2745 &prefix_len, |
| 2746 NULL); |
| 2719 EXPECT_EQ(url.spec(), GURL(formatted).spec()); | 2747 EXPECT_EQ(url.spec(), GURL(formatted).spec()); |
| 2720 } | 2748 } |
| 2721 } | 2749 } |
| 2722 | 2750 |
| 2723 // Make sure that calling FormatUrl on a GURL and then converting back to a GURL | 2751 // Make sure that calling FormatUrl on a GURL and then converting back to a GURL |
| 2724 // only results in a different GURL for certain characters. | 2752 // only results in a different GURL for certain characters. |
| 2725 TEST(NetUtilTest, FormatUrlRoundTripQueryEscaped) { | 2753 TEST(NetUtilTest, FormatUrlRoundTripQueryEscaped) { |
| 2726 // A full list of characters which FormatURL should unescape and GURL should | 2754 // A full list of characters which FormatURL should unescape and GURL should |
| 2727 // not escape again, when they appear in a query string. | 2755 // not escape again, when they appear in a query string. |
| 2728 const char* kUnescapedCharacters = | 2756 const char* kUnescapedCharacters = |
| 2729 "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_~"; | 2757 "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_~"; |
| 2730 for (unsigned char test_char = 0; test_char < 128; ++test_char) { | 2758 for (unsigned char test_char = 0; test_char < 128; ++test_char) { |
| 2731 std::string original_url("http://www.google.com/?"); | 2759 std::string original_url("http://www.google.com/?"); |
| 2732 original_url.push_back('%'); | 2760 original_url.push_back('%'); |
| 2733 original_url.append(base::HexEncode(&test_char, 1)); | 2761 original_url.append(base::HexEncode(&test_char, 1)); |
| 2734 | 2762 |
| 2735 GURL url(original_url); | 2763 GURL url(original_url); |
| 2736 size_t prefix_len; | 2764 size_t prefix_len; |
| 2737 base::string16 formatted = FormatUrl( | 2765 base::string16 formatted = FormatUrl(url, |
| 2738 url, "", kFormatUrlOmitUsernamePassword, UnescapeRule::NORMAL, NULL, | 2766 std::string(), |
| 2739 &prefix_len, NULL); | 2767 kFormatUrlOmitUsernamePassword, |
| 2768 UnescapeRule::NORMAL, |
| 2769 NULL, |
| 2770 &prefix_len, |
| 2771 NULL); |
| 2740 | 2772 |
| 2741 if (test_char && | 2773 if (test_char && |
| 2742 strchr(kUnescapedCharacters, static_cast<char>(test_char))) { | 2774 strchr(kUnescapedCharacters, static_cast<char>(test_char))) { |
| 2743 EXPECT_NE(url.spec(), GURL(formatted).spec()); | 2775 EXPECT_NE(url.spec(), GURL(formatted).spec()); |
| 2744 } else { | 2776 } else { |
| 2745 EXPECT_EQ(url.spec(), GURL(formatted).spec()); | 2777 EXPECT_EQ(url.spec(), GURL(formatted).spec()); |
| 2746 } | 2778 } |
| 2747 } | 2779 } |
| 2748 } | 2780 } |
| 2749 | 2781 |
| (...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3029 EXPECT_EQ("file:///tmp/test.html", | 3061 EXPECT_EQ("file:///tmp/test.html", |
| 3030 GetHostOrSpecFromURL(GURL("file:///tmp/test.html"))); | 3062 GetHostOrSpecFromURL(GURL("file:///tmp/test.html"))); |
| 3031 } | 3063 } |
| 3032 | 3064 |
| 3033 // Test that invalid IP literals fail to parse. | 3065 // Test that invalid IP literals fail to parse. |
| 3034 TEST(NetUtilTest, ParseIPLiteralToNumber_FailParse) { | 3066 TEST(NetUtilTest, ParseIPLiteralToNumber_FailParse) { |
| 3035 IPAddressNumber number; | 3067 IPAddressNumber number; |
| 3036 | 3068 |
| 3037 EXPECT_FALSE(ParseIPLiteralToNumber("bad value", &number)); | 3069 EXPECT_FALSE(ParseIPLiteralToNumber("bad value", &number)); |
| 3038 EXPECT_FALSE(ParseIPLiteralToNumber("bad:value", &number)); | 3070 EXPECT_FALSE(ParseIPLiteralToNumber("bad:value", &number)); |
| 3039 EXPECT_FALSE(ParseIPLiteralToNumber("", &number)); | 3071 EXPECT_FALSE(ParseIPLiteralToNumber(std::string(), &number)); |
| 3040 EXPECT_FALSE(ParseIPLiteralToNumber("192.168.0.1:30", &number)); | 3072 EXPECT_FALSE(ParseIPLiteralToNumber("192.168.0.1:30", &number)); |
| 3041 EXPECT_FALSE(ParseIPLiteralToNumber(" 192.168.0.1 ", &number)); | 3073 EXPECT_FALSE(ParseIPLiteralToNumber(" 192.168.0.1 ", &number)); |
| 3042 EXPECT_FALSE(ParseIPLiteralToNumber("[::1]", &number)); | 3074 EXPECT_FALSE(ParseIPLiteralToNumber("[::1]", &number)); |
| 3043 } | 3075 } |
| 3044 | 3076 |
| 3045 // Test parsing an IPv4 literal. | 3077 // Test parsing an IPv4 literal. |
| 3046 TEST(NetUtilTest, ParseIPLiteralToNumber_IPv4) { | 3078 TEST(NetUtilTest, ParseIPLiteralToNumber_IPv4) { |
| 3047 IPAddressNumber number; | 3079 IPAddressNumber number; |
| 3048 EXPECT_TRUE(ParseIPLiteralToNumber("192.168.0.1", &number)); | 3080 EXPECT_TRUE(ParseIPLiteralToNumber("192.168.0.1", &number)); |
| 3049 EXPECT_EQ("192,168,0,1", DumpIPNumber(number)); | 3081 EXPECT_EQ("192,168,0,1", DumpIPNumber(number)); |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3264 if (it->address[i] != 0) { | 3296 if (it->address[i] != 0) { |
| 3265 all_zeroes = false; | 3297 all_zeroes = false; |
| 3266 break; | 3298 break; |
| 3267 } | 3299 } |
| 3268 } | 3300 } |
| 3269 EXPECT_FALSE(all_zeroes); | 3301 EXPECT_FALSE(all_zeroes); |
| 3270 } | 3302 } |
| 3271 } | 3303 } |
| 3272 | 3304 |
| 3273 } // namespace net | 3305 } // namespace net |
| OLD | NEW |