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

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

Issue 493253003: Adds default port handling to FormatUrl. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « net/base/net_util.h ('k') | net/base/net_util_icu_unittest.cc » ('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/net_util.h" 5 #include "net/base/net_util.h"
6 6
7 #include <map> 7 #include <map>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/i18n/time_formatting.h" 10 #include "base/i18n/time_formatting.h"
(...skipping 558 matching lines...) Expand 10 before | Expand all | Expand 10 after
569 } 569 }
570 570
571 } // namespace 571 } // namespace
572 572
573 const FormatUrlType kFormatUrlOmitNothing = 0; 573 const FormatUrlType kFormatUrlOmitNothing = 0;
574 const FormatUrlType kFormatUrlOmitUsernamePassword = 1 << 0; 574 const FormatUrlType kFormatUrlOmitUsernamePassword = 1 << 0;
575 const FormatUrlType kFormatUrlOmitHTTP = 1 << 1; 575 const FormatUrlType kFormatUrlOmitHTTP = 1 << 1;
576 const FormatUrlType kFormatUrlOmitTrailingSlashOnBareHostname = 1 << 2; 576 const FormatUrlType kFormatUrlOmitTrailingSlashOnBareHostname = 1 << 2;
577 const FormatUrlType kFormatUrlOmitAll = kFormatUrlOmitUsernamePassword | 577 const FormatUrlType kFormatUrlOmitAll = kFormatUrlOmitUsernamePassword |
578 kFormatUrlOmitHTTP | kFormatUrlOmitTrailingSlashOnBareHostname; 578 kFormatUrlOmitHTTP | kFormatUrlOmitTrailingSlashOnBareHostname;
579 const FormatUrlType kFormatUrlOmitDefaultPort = 1 << 3;
579 580
580 base::string16 IDNToUnicode(const std::string& host, 581 base::string16 IDNToUnicode(const std::string& host,
581 const std::string& languages) { 582 const std::string& languages) {
582 return IDNToUnicodeWithAdjustments(host, languages, NULL); 583 return IDNToUnicodeWithAdjustments(host, languages, NULL);
583 } 584 }
584 585
585 std::string GetDirectoryListingEntry(const base::string16& name, 586 std::string GetDirectoryListingEntry(const base::string16& name,
586 const std::string& raw_bytes, 587 const std::string& raw_bytes,
587 bool is_dir, 588 bool is_dir,
588 int64 size, 589 int64 size,
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
742 if (parsed.username.is_valid() || parsed.password.is_valid()) 743 if (parsed.username.is_valid() || parsed.password.is_valid())
743 url_string.push_back('@'); 744 url_string.push_back('@');
744 } 745 }
745 if (prefix_end) 746 if (prefix_end)
746 *prefix_end = static_cast<size_t>(url_string.length()); 747 *prefix_end = static_cast<size_t>(url_string.length());
747 748
748 // Host. 749 // Host.
749 AppendFormattedComponent(spec, parsed.host, HostComponentTransform(languages), 750 AppendFormattedComponent(spec, parsed.host, HostComponentTransform(languages),
750 &url_string, &new_parsed->host, adjustments); 751 &url_string, &new_parsed->host, adjustments);
751 752
752 // Port. 753 // Port. Can omit port if it matches the default port for the scheme.
753 if (parsed.port.is_nonempty()) { 754 bool port_needs_reset = !parsed.port.is_nonempty();
755 if (!port_needs_reset && format_types & kFormatUrlOmitDefaultPort) {
Ryan Sleevi 2014/08/25 04:16:37 Put this bitmask in () (format_type & kFormatUrlO
756 int port = url::ParsePort(spec.data(), parsed.port);
757 // Intentionally keep the port if there is a parsing error.
758 port_needs_reset =
759 (port == url::PORT_UNSPECIFIED) ||
760 (port == url::DefaultPortForScheme(spec.data() + parsed.scheme.begin,
761 parsed.scheme.len));
762 if (port_needs_reset) {
763 adjustments->push_back(base::OffsetAdjuster::Adjustment(
764 parsed.port.begin, parsed.port.len, 0));
765 }
766 }
767
768 if (!port_needs_reset) {
754 url_string.push_back(':'); 769 url_string.push_back(':');
755 new_parsed->port.begin = url_string.length(); 770 new_parsed->port.begin = url_string.length();
756 url_string.insert(url_string.end(), 771 url_string.insert(url_string.end(),
757 spec.begin() + parsed.port.begin, 772 spec.begin() + parsed.port.begin,
758 spec.begin() + parsed.port.end()); 773 spec.begin() + parsed.port.end());
759 new_parsed->port.len = url_string.length() - new_parsed->port.begin; 774 new_parsed->port.len = url_string.length() - new_parsed->port.begin;
760 } else { 775 } else {
761 new_parsed->port.reset(); 776 new_parsed->port.reset();
762 } 777 }
763 778
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
821 if (offset_for_adjustment) 836 if (offset_for_adjustment)
822 offsets.push_back(*offset_for_adjustment); 837 offsets.push_back(*offset_for_adjustment);
823 base::string16 result = FormatUrlWithOffsets(url, languages, format_types, 838 base::string16 result = FormatUrlWithOffsets(url, languages, format_types,
824 unescape_rules, new_parsed, prefix_end, &offsets); 839 unescape_rules, new_parsed, prefix_end, &offsets);
825 if (offset_for_adjustment) 840 if (offset_for_adjustment)
826 *offset_for_adjustment = offsets[0]; 841 *offset_for_adjustment = offsets[0];
827 return result; 842 return result;
828 } 843 }
829 844
830 } // namespace net 845 } // namespace net
OLDNEW
« no previous file with comments | « net/base/net_util.h ('k') | net/base/net_util_icu_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698