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

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

Issue 10448109: Move function for classifying a string as a mime type into MimeUtil (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Adapt for windows unicode strings. Created 8 years, 6 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/mime_util.h ('k') | net/base/mime_util_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 <map> 5 #include <map>
6 #include <string> 6 #include <string>
7 7
8 #include "net/base/mime_util.h" 8 #include "net/base/mime_util.h"
9 #include "net/base/platform_mime_util.h" 9 #include "net/base/platform_mime_util.h"
10 10
(...skipping 25 matching lines...) Expand all
36 bool IsSupportedNonImageMimeType(const std::string& mime_type) const; 36 bool IsSupportedNonImageMimeType(const std::string& mime_type) const;
37 bool IsSupportedJavascriptMimeType(const std::string& mime_type) const; 37 bool IsSupportedJavascriptMimeType(const std::string& mime_type) const;
38 38
39 bool IsViewSourceMimeType(const std::string& mime_type) const; 39 bool IsViewSourceMimeType(const std::string& mime_type) const;
40 40
41 bool IsSupportedMimeType(const std::string& mime_type) const; 41 bool IsSupportedMimeType(const std::string& mime_type) const;
42 42
43 bool MatchesMimeType(const std::string &mime_type_pattern, 43 bool MatchesMimeType(const std::string &mime_type_pattern,
44 const std::string &mime_type) const; 44 const std::string &mime_type) const;
45 45
46 bool IsMimeType(const std::string& type_string) const;
47
46 bool AreSupportedMediaCodecs(const std::vector<std::string>& codecs) const; 48 bool AreSupportedMediaCodecs(const std::vector<std::string>& codecs) const;
47 49
48 void ParseCodecString(const std::string& codecs, 50 void ParseCodecString(const std::string& codecs,
49 std::vector<std::string>* codecs_out, 51 std::vector<std::string>* codecs_out,
50 bool strip); 52 bool strip);
51 53
52 bool IsStrictMediaMimeType(const std::string& mime_type) const; 54 bool IsStrictMediaMimeType(const std::string& mime_type) const;
53 bool IsSupportedStrictMediaMimeType( 55 bool IsSupportedStrictMediaMimeType(
54 const std::string& mime_type, 56 const std::string& mime_type,
55 const std::vector<std::string>& codecs) const; 57 const std::vector<std::string>& codecs) const;
(...skipping 423 matching lines...) Expand 10 before | Expand all | Expand 10 after
479 if (mime_type.find(left) != 0) 481 if (mime_type.find(left) != 0)
480 return false; 482 return false;
481 483
482 if (!right.empty() && 484 if (!right.empty() &&
483 mime_type.rfind(right) != mime_type.length() - right.length()) 485 mime_type.rfind(right) != mime_type.length() - right.length())
484 return false; 486 return false;
485 487
486 return true; 488 return true;
487 } 489 }
488 490
491 // See http://www.iana.org/assignments/media-types/index.html
492 static const char* legal_top_level_types[] = {
493 "application/",
494 "audio/",
495 "example/",
496 "image/",
497 "message/",
498 "model/",
499 "multipart/",
500 "text/",
501 "video/",
502 };
503
504 bool MimeUtil::IsMimeType(const std::string& type_string) const {
505 // MIME types are always ASCII and case-insensitive (at least, the top-level
506 // and secondary types we care about).
507 if (!IsStringASCII(type_string))
508 return false;
509
510 if (type_string == "*/*" || type_string == "*")
511 return true;
512
513 for (size_t i = 0; i < arraysize(legal_top_level_types); ++i) {
514 if (StartsWithASCII(type_string, legal_top_level_types[i], false) &&
515 type_string.length() > strlen(legal_top_level_types[i])) {
516 return true;
517 }
518 }
519
520 // If there's a "/" separator character, and the token before it is
521 // "x-" + (ascii characters), it is also a MIME type.
522 size_t slash = type_string.find('/');
523 if (slash < 3 ||
524 slash == std::string::npos || slash == type_string.length() - 1) {
525 return false;
526 }
527
528 if (StartsWithASCII(type_string, "x-", false))
529 return true;
530
531 return false;
532 }
533
489 bool MimeUtil::AreSupportedMediaCodecs( 534 bool MimeUtil::AreSupportedMediaCodecs(
490 const std::vector<std::string>& codecs) const { 535 const std::vector<std::string>& codecs) const {
491 return AreSupportedCodecs(codecs_map_, codecs); 536 return AreSupportedCodecs(codecs_map_, codecs);
492 } 537 }
493 538
494 void MimeUtil::ParseCodecString(const std::string& codecs, 539 void MimeUtil::ParseCodecString(const std::string& codecs,
495 std::vector<std::string>* codecs_out, 540 std::vector<std::string>* codecs_out,
496 bool strip) { 541 bool strip) {
497 std::string no_quote_codecs; 542 std::string no_quote_codecs;
498 TrimString(codecs, "\"", &no_quote_codecs); 543 TrimString(codecs, "\"", &no_quote_codecs);
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
571 616
572 bool IsSupportedMimeType(const std::string& mime_type) { 617 bool IsSupportedMimeType(const std::string& mime_type) {
573 return g_mime_util.Get().IsSupportedMimeType(mime_type); 618 return g_mime_util.Get().IsSupportedMimeType(mime_type);
574 } 619 }
575 620
576 bool MatchesMimeType(const std::string& mime_type_pattern, 621 bool MatchesMimeType(const std::string& mime_type_pattern,
577 const std::string& mime_type) { 622 const std::string& mime_type) {
578 return g_mime_util.Get().MatchesMimeType(mime_type_pattern, mime_type); 623 return g_mime_util.Get().MatchesMimeType(mime_type_pattern, mime_type);
579 } 624 }
580 625
626 bool IsMimeType(const std::string& type_string) {
627 return g_mime_util.Get().IsMimeType(type_string);
628 }
629
581 bool AreSupportedMediaCodecs(const std::vector<std::string>& codecs) { 630 bool AreSupportedMediaCodecs(const std::vector<std::string>& codecs) {
582 return g_mime_util.Get().AreSupportedMediaCodecs(codecs); 631 return g_mime_util.Get().AreSupportedMediaCodecs(codecs);
583 } 632 }
584 633
585 bool IsStrictMediaMimeType(const std::string& mime_type) { 634 bool IsStrictMediaMimeType(const std::string& mime_type) {
586 return g_mime_util.Get().IsStrictMediaMimeType(mime_type); 635 return g_mime_util.Get().IsStrictMediaMimeType(mime_type);
587 } 636 }
588 637
589 bool IsSupportedStrictMediaMimeType(const std::string& mime_type, 638 bool IsSupportedStrictMediaMimeType(const std::string& mime_type,
590 const std::vector<std::string>& codecs) { 639 const std::vector<std::string>& codecs) {
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
779 // Unless/until WebM files are added to the media layout tests, we need to avoid 828 // Unless/until WebM files are added to the media layout tests, we need to avoid
780 // blacklisting mp4 and H.264 when Theora is not supported (and proprietary 829 // blacklisting mp4 and H.264 when Theora is not supported (and proprietary
781 // codecs are) so that the media tests can still run. 830 // codecs are) so that the media tests can still run.
782 #if defined(ENABLE_MEDIA_CODEC_THEORA) || !defined(USE_PROPRIETARY_CODECS) 831 #if defined(ENABLE_MEDIA_CODEC_THEORA) || !defined(USE_PROPRIETARY_CODECS)
783 for (size_t i = 0; i < arraysize(proprietary_media_codecs); ++i) 832 for (size_t i = 0; i < arraysize(proprietary_media_codecs); ++i)
784 codecs->push_back(proprietary_media_codecs[i]); 833 codecs->push_back(proprietary_media_codecs[i]);
785 #endif 834 #endif
786 } 835 }
787 836
788 } // namespace net 837 } // namespace net
OLDNEW
« no previous file with comments | « net/base/mime_util.h ('k') | net/base/mime_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698