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

Side by Side Diff: url/third_party/mozilla/url_parse.cc

Issue 560283003: Wrong filename on file upload (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added deleted line Created 6 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 unified diff | Download patch
« no previous file with comments | « no previous file | url/url_parse_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 /* Based on nsURLParsers.cc from Mozilla 1 /* Based on nsURLParsers.cc from Mozilla
2 * ------------------------------------- 2 * -------------------------------------
3 * The contents of this file are subject to the Mozilla Public License Version 3 * The contents of this file are subject to the Mozilla Public License Version
4 * 1.1 (the "License"); you may not use this file except in compliance with 4 * 1.1 (the "License"); you may not use this file except in compliance with
5 * the License. You may obtain a copy of the License at 5 * the License. You may obtain a copy of the License at
6 * http://www.mozilla.org/MPL/ 6 * http://www.mozilla.org/MPL/
7 * 7 *
8 * Software distributed under the License is distributed on an "AS IS" basis, 8 * Software distributed under the License is distributed on an "AS IS" basis,
9 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 9 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
10 * for the specific language governing rights and limitations under the 10 * for the specific language governing rights and limitations under the
(...skipping 607 matching lines...) Expand 10 before | Expand all | Expand 10 after
618 // Handle empty paths: they have no file names. 618 // Handle empty paths: they have no file names.
619 if (!path.is_nonempty()) { 619 if (!path.is_nonempty()) {
620 file_name->reset(); 620 file_name->reset();
621 return; 621 return;
622 } 622 }
623 623
624 // Search backwards for a parameter, which is a normally unused field in a 624 // Search backwards for a parameter, which is a normally unused field in a
625 // URL delimited by a semicolon. We parse the parameter as part of the 625 // URL delimited by a semicolon. We parse the parameter as part of the
626 // path, but here, we don't want to count it. The last semicolon is the 626 // path, but here, we don't want to count it. The last semicolon is the
627 // parameter. The path should start with a slash, so we don't need to check 627 // parameter. The path should start with a slash, so we don't need to check
628 // the first one. 628 // the first one.
asanka 2014/09/17 20:56:25 Update the comment? I'd suggest adding a referenc
brettw 2014/10/14 18:28:55 Yes, this needs updating. The whole thing should b
629 int file_end = path.end(); 629 int file_end = path.end();
630 for (int i = path.end() - 1; i > path.begin; i--) { 630 for (int i = path.end() - 1; i >= path.begin; i--) {
631 if (spec[i] == ';') { 631 if (spec[i] == ';') {
632 file_end = i; 632 file_end = i;
633 break; 633 } else if (IsURLSlash(spec[i])) {
634 }
635 }
636
637 // Now search backwards from the filename end to the previous slash
638 // to find the beginning of the filename.
639 for (int i = file_end - 1; i >= path.begin; i--) {
640 if (IsURLSlash(spec[i])) {
641 // File name is everything following this character to the end 634 // File name is everything following this character to the end
642 *file_name = MakeRange(i + 1, file_end); 635 *file_name = MakeRange(i + 1, file_end);
643 return; 636 return;
644 } 637 }
645 } 638 }
646 639
647 // No slash found, this means the input was degenerate (generally paths 640 // No slash found, this means the input was degenerate (generally paths
648 // will start with a slash). Let's call everything the file name. 641 // will start with a slash). Let's call everything the file name.
649 *file_name = MakeRange(path.begin, file_end); 642 *file_name = MakeRange(path.begin, file_end);
650 return; 643 return;
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
935 } 928 }
936 929
937 void ParseAfterScheme(const base::char16* spec, 930 void ParseAfterScheme(const base::char16* spec,
938 int spec_len, 931 int spec_len,
939 int after_scheme, 932 int after_scheme,
940 Parsed* parsed) { 933 Parsed* parsed) {
941 DoParseAfterScheme(spec, spec_len, after_scheme, parsed); 934 DoParseAfterScheme(spec, spec_len, after_scheme, parsed);
942 } 935 }
943 936
944 } // namespace url 937 } // namespace url
OLDNEW
« no previous file with comments | « no previous file | url/url_parse_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698