From ff608de7818790c6df7f02283f9941db7e5090b2 Mon Sep 17 00:00:00 2001 From: Mathieu Rheaume Date: Sat, 12 Sep 2015 16:56:55 -0400 Subject: [PATCH] fixup! Issue #7382 Use descriptive enums instead of booleans for MIMEClassifier::classifer --- components/net/mime_classifier.rs | 21 +++++++++++++-------- tests/unit/net/mime_classifier.rs | 10 ++++++++++ 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/components/net/mime_classifier.rs b/components/net/mime_classifier.rs index 90f62efa4ef..ab7a9686755 100644 --- a/components/net/mime_classifier.rs +++ b/components/net/mime_classifier.rs @@ -26,6 +26,7 @@ pub enum ApacheBugFlag { OFF } +#[derive(PartialEq)] pub enum NoSniffFlag { ON, OFF @@ -81,14 +82,18 @@ impl MIMEClassifier { //some sort of iterator over the classifiers might be better? fn sniff_unknown_type(&self, no_sniff_flag: NoSniffFlag, data: &[u8]) -> Option<(String, String)> { - match no_sniff_flag { - NoSniffFlag::OFF => self.scriptable_classifier.classify(data), - _ => None - }.or_else(|| self.plaintext_classifier.classify(data)) - .or_else(|| self.image_classifier.classify(data)) - .or_else(|| self.audio_video_classifier.classify(data)) - .or_else(|| self.archive_classifier.classify(data)) - .or_else(|| self.binary_or_plaintext.classify(data)) + let should_sniff_scriptable = no_sniff_flag == NoSniffFlag::OFF; + let sniffed = if should_sniff_scriptable { + self.scriptable_classifier.classify(data) + } else { + None + }; + + sniffed.or_else(|| self.plaintext_classifier.classify(data)) + .or_else(|| self.image_classifier.classify(data)) + .or_else(|| self.audio_video_classifier.classify(data)) + .or_else(|| self.archive_classifier.classify(data)) + .or_else(|| self.binary_or_plaintext.classify(data)) } fn sniff_text_or_data(&self, data: &[u8]) -> Option<(String, String)> { diff --git a/tests/unit/net/mime_classifier.rs b/tests/unit/net/mime_classifier.rs index 84870c2f904..f7826de0d57 100644 --- a/tests/unit/net/mime_classifier.rs +++ b/tests/unit/net/mime_classifier.rs @@ -529,3 +529,13 @@ fn test_sniff_octet_stream_apache_flag_on() { ApacheBugFlag::ON); } +#[test] +fn test_sniff_mp4_video_apache_flag_on() { + test_sniff_with_flags(&PathBuf::from("video/mp4/test.mp4"), + "video", + "mp4", + None, + NoSniffFlag::OFF, + ApacheBugFlag::ON); +} +