Home | History | Annotate | Download | only in media
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include <string>
      6 
      7 #include "content/browser/media/media_browsertest.h"
      8 #include "content/public/test/browser_test_utils.h"
      9 #include "content/public/test/content_browser_test_utils.h"
     10 #include "content/shell/browser/shell.h"
     11 
     12 #if defined(OS_ANDROID)
     13 #include "base/android/build_info.h"
     14 #endif
     15 
     16 const char kProbably[] = "probably";
     17 const char kMaybe[] = "maybe";
     18 const char kNot[] = "";
     19 
     20 #if defined(USE_PROPRIETARY_CODECS)
     21 const char kPropProbably[] = "probably";
     22 const char kPropMaybe[] = "maybe";
     23 #else
     24 const char kPropProbably[] = "";
     25 const char kPropMaybe[] = "";
     26 #endif  // USE_PROPRIETARY_CODECS
     27 
     28 // TODO(amogh.bihani): Change the opus tests when opus is  on
     29 // Android. (http://crbug.com/318436).
     30 #if !defined(OS_ANDROID)
     31 const char kOggVideoProbably[] = "probably";
     32 const char kOggVideoMaybe[] = "maybe";
     33 const char kTheoraProbably[] = "probably";
     34 const char kOpusProbably[] = "probably";
     35 #if defined(USE_PROPRIETARY_CODECS)
     36 const char kTheoraAndPropProbably[] = "probably";
     37 const char kOpusAndPropProbably[] = "probably";
     38 #else
     39 const char kTheoraAndPropProbably[] = "";
     40 const char kOpusAndPropProbably[] = "";
     41 #endif  // USE_PROPRIETARY_CODECS
     42 #else
     43 const char kOggVideoProbably[] = "";
     44 const char kOggVideoMaybe[] = "";
     45 const char kTheoraProbably[] = "";
     46 const char kOpusProbably[] = "";
     47 const char kTheoraAndPropProbably[] = "maybe";
     48 const char kOpusAndPropProbably[] = "maybe";
     49 #endif  // !OS_ANDROID
     50 
     51 namespace content {
     52 
     53 class MediaCanPlayTypeTest : public MediaBrowserTest {
     54 public:
     55   MediaCanPlayTypeTest() : url_("about:blank") { }
     56 
     57   virtual void SetUpOnMainThread() OVERRIDE {
     58     NavigateToURL(shell(), url_);
     59   }
     60 
     61   std::string CanPlay(const std::string& type) {
     62     std::string command("document.createElement('video').canPlayType(");
     63     command.append(type);
     64     command.append(")");
     65 
     66     std::string result;
     67     EXPECT_TRUE(ExecuteScriptAndExtractString(
     68         shell()->web_contents(),
     69         "window.domAutomationController.send(" + command + ");",
     70         &result));
     71     return result;
     72   }
     73 
     74 private:
     75   GURL url_;
     76   DISALLOW_COPY_AND_ASSIGN(MediaCanPlayTypeTest);
     77 };
     78 
     79 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_wav) {
     80   EXPECT_EQ(kMaybe, CanPlay("'audio/wav'"));
     81   EXPECT_EQ(kProbably, CanPlay("'audio/wav; codecs=\"1\"'"));
     82 
     83   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"vorbis\"'"));
     84   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"theora\"'"));
     85 
     86   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"vp8\"'"));
     87   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"vp8.0\"'"));
     88   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"vp9\"'"));
     89   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"vp9.0\"'"));
     90   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"opus\"'"));
     91 
     92   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"avc1\"'"));
     93   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"avc3\"'"));
     94   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"mp4a\"'"));
     95   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"avc1.4D401E\"'"));
     96   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"avc3.64001F\"'"));
     97   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"mp4a.40.5\"'"));
     98 
     99   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"1, mp4a\"'"));
    100   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"1, opus\"'"));
    101   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"1, theora\"'"));
    102   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"1, vorbis\"'"));
    103   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"opus, vorbis\"'"));
    104   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"opus, theora\"'"));
    105   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"vorbis, mp4a\"'"));
    106 
    107   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"unknown\"'"));
    108 
    109   EXPECT_EQ(kMaybe, CanPlay("'audio/x-wav'"));
    110   EXPECT_EQ(kProbably, CanPlay("'audio/x-wav; codecs=\"1\"'"));
    111 
    112   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"vorbis\"'"));
    113   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"theora\"'"));
    114 
    115   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"vp8\"'"));
    116   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"vp8.0\"'"));
    117   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"vp9\"'"));
    118   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"vp9.0\"'"));
    119   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"opus\"'"));
    120 
    121   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"avc1\"'"));
    122   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"avc3\"'"));
    123   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"mp4a\"'"));
    124   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"avc1.4D401E\"'"));
    125   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"avc3.64001F\"'"));
    126   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"mp4a.40.5\"'"));
    127 
    128   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"1, mp4a\"'"));
    129   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"1, opus\"'"));
    130   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"1, theora\"'"));
    131   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"1, vorbis\"'"));
    132   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"opus, vorbis\"'"));
    133   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"opus, theora\"'"));
    134   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"vorbis, mp4a\"'"));
    135 
    136   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"unknown\"'"));
    137 }
    138 
    139 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_webm) {
    140   // On Android, VP9 is supported only on KitKat and above (API level 19).
    141   std::string VP9Probably = "probably";
    142   std::string VP9AndOpusProbably = "probably";
    143 #if defined(OS_ANDROID)
    144   VP9AndOpusProbably = "";
    145   if (base::android::BuildInfo::GetInstance()->sdk_int() < 19)
    146     VP9Probably = "";
    147 #endif
    148   EXPECT_EQ(kMaybe, CanPlay("'video/webm'"));
    149 
    150   EXPECT_EQ(kProbably, CanPlay("'video/webm; codecs=\"vp8\"'"));
    151   EXPECT_EQ(kProbably, CanPlay("'video/webm; codecs=\"vp8.0\"'"));
    152   EXPECT_EQ(kProbably, CanPlay("'video/webm; codecs=\"vp8, vorbis\"'"));
    153   EXPECT_EQ(kProbably, CanPlay("'video/webm; codecs=\"vp8.0, vorbis\"'"));
    154   EXPECT_EQ(kOpusProbably, CanPlay("'video/webm; codecs=\"vp8, opus\"'"));
    155   EXPECT_EQ(kOpusProbably, CanPlay("'video/webm; codecs=\"vp8.0, opus\"'"));
    156 
    157   EXPECT_EQ(VP9Probably, CanPlay("'video/webm; codecs=\"vp9\"'"));
    158   EXPECT_EQ(VP9Probably, CanPlay("'video/webm; codecs=\"vp9.0\"'"));
    159   EXPECT_EQ(VP9Probably, CanPlay("'video/webm; codecs=\"vp9, vorbis\"'"));
    160   EXPECT_EQ(VP9Probably, CanPlay("'video/webm; codecs=\"vp9.0, vorbis\"'"));
    161   EXPECT_EQ(VP9AndOpusProbably, CanPlay("'video/webm; codecs=\"vp9, opus\"'"));
    162   EXPECT_EQ(VP9AndOpusProbably,
    163             CanPlay("'video/webm; codecs=\"vp9.0, opus\"'"));
    164 
    165   EXPECT_EQ(VP9Probably, CanPlay("'video/webm; codecs=\"vp8, vp9\"'"));
    166   EXPECT_EQ(VP9Probably, CanPlay("'video/webm; codecs=\"vp8.0, vp9.0\"'"));
    167   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp8, theora\"'"));
    168   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp8, avc1\"'"));
    169   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp9, avc3\"'"));
    170 
    171   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp8, 1\"'"));
    172   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp8.0, 1\"'"));
    173   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp8, mp4a.40.2\"'"));
    174   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp8.0, mp4a.40.2\"'"));
    175 
    176   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp9, 1\"'"));
    177   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp9.0, 1\"'"));
    178   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp9, mp4a.40.2\"'"));
    179   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp9.0, mp4a.40.2\"'"));
    180 
    181   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"theora\"'"));
    182   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"1\"'"));
    183 
    184   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"avc1\"'"));
    185   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"avc3\"'"));
    186   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"mp4a\"'"));
    187   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"avc1.4D401E\"'"));
    188   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"avc3.64001F\"'"));
    189   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"mp4a.40.2\"'"));
    190 
    191   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"VP8\"'"));
    192   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"VP8.0\"'"));
    193   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"VP9\"'"));
    194   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"Vp9.0\"'"));
    195 
    196   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"VP8, Vorbis\"'"));
    197   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp8, Vorbis\"'"));
    198   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"VP9, Opus\"'"));
    199   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp9, Opus\"'"));
    200 
    201   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"unknown\"'"));
    202 
    203   EXPECT_EQ(kMaybe, CanPlay("'audio/webm'"));
    204   EXPECT_EQ(kProbably, CanPlay("'audio/webm; codecs=\"vorbis\"'"));
    205   EXPECT_EQ(kOpusProbably, CanPlay("'audio/webm; codecs=\"opus\"'"));
    206   EXPECT_EQ(kOpusProbably, CanPlay("'audio/webm; codecs=\"opus, vorbis\"'"));
    207 
    208   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp8\"'"));
    209   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp8.0\"'"));
    210   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp8, vorbis\"'"));
    211   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp8.0, vorbis\"'"));
    212   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp8, opus\"'"));
    213   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp8.0, opus\"'"));
    214 
    215   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp9\"'"));
    216   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp9.0\"'"));
    217   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp9, vorbis\"'"));
    218   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp9.0, vorbis\"'"));
    219   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp9, opus\"'"));
    220   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp9.0, opus\"'"));
    221 
    222   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"1\"'"));
    223   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"1, opus\"'"));
    224   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"1, vorbis\"'"));
    225   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vorbis, mp4a\"'"));
    226 
    227   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"avc1\"'"));
    228   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"avc3\"'"));
    229   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"mp4a\"'"));
    230   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"avc1.4D401E\"'"));
    231   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"avc3.64001F\"'"));
    232   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"mp4a.40.2\"'"));
    233 
    234   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"unknown\"'"));
    235 }
    236 
    237 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_ogg) {
    238   EXPECT_EQ(kOggVideoMaybe, CanPlay("'video/ogg'"));
    239   EXPECT_EQ(kOggVideoProbably, CanPlay("'video/ogg; codecs=\"theora\"'"));
    240   EXPECT_EQ(kOggVideoProbably,
    241             CanPlay("'video/ogg; codecs=\"theora, vorbis\"'"));
    242   EXPECT_EQ(kOggVideoProbably,
    243             CanPlay("'video/ogg; codecs=\"theora, opus\"'"));
    244   EXPECT_EQ(kOggVideoProbably,
    245             CanPlay("'video/ogg; codecs=\"opus, vorbis\"'"));
    246 
    247   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"vp8\"'"));
    248   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"vp8.0\"'"));
    249   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"vp9\"'"));
    250   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"vp9.0\"'"));
    251 
    252   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc1\"'"));
    253   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc3\"'"));
    254   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"mp4a\"'"));
    255   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc1, mp4a\"'"));
    256   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc1, vorbis\"'"));
    257   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc3, mp4a\"'"));
    258   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc3, vorbis\"'"));
    259   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc1, vp8\"'"));
    260   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc3, vp9\"'"));
    261   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc1, avc3\"'"));
    262 
    263   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc1.4D401E\"'"));
    264   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc3.64001F\"'"));
    265   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"mp4a.4.02\"'"));
    266   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc1.4D401E, mp4a.40.2\"'"));
    267   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc3.64001F, mp4a.40.2\"'"));
    268   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc1.4D401E, vorbis\"'"));
    269   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc3.64001F, vorbis\"'"));
    270 
    271   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"Theora\"'"));
    272   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"Opus\"'"));
    273   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"Vorbis\"'"));
    274   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"Theora, Opus\"'"));
    275   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"Theora, Vorbis\"'"));
    276 
    277   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"unknown\"'"));
    278 
    279   EXPECT_EQ(kMaybe, CanPlay("'audio/ogg'"));
    280   EXPECT_EQ(kProbably, CanPlay("'audio/ogg; codecs=\"vorbis\"'"));
    281   EXPECT_EQ(kOpusProbably, CanPlay("'audio/ogg; codecs=\"opus\"'"));
    282   EXPECT_EQ(kOpusProbably, CanPlay("'audio/ogg; codecs=\"vorbis, opus\"'"));
    283 
    284   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"theora\"'"));
    285   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"theora, vorbis\"'"));
    286   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"theora, opus\"'"));
    287   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"opus, 1\"'"));
    288   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"vorbis, 1\"'"));
    289 
    290   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"vp8\"'"));
    291   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"vp8.0\"'"));
    292   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"vp9\"'"));
    293   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"vp9.0\"'"));
    294 
    295   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"avc1\"'"));
    296   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"avc3\"'"));
    297   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"mp4a\"'"));
    298   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"avc1.4D401E\"'"));
    299   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"avc3.64001F\"'"));
    300   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"mp4a.40.2\"'"));
    301 
    302   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"Theora\"'"));
    303   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"Opus\"'"));
    304   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"Vorbis\"'"));
    305   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"Theora, Vorbis\"'"));
    306   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"Theora, Opus\"'"));
    307 
    308   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"unknown\"'"));
    309 
    310   EXPECT_EQ(kMaybe, CanPlay("'application/ogg'"));
    311   EXPECT_EQ(kProbably, CanPlay("'application/ogg; codecs=\"vorbis\"'"));
    312   EXPECT_EQ(kTheoraProbably, CanPlay("'application/ogg; codecs=\"theora\"'"));
    313   EXPECT_EQ(kOpusProbably, CanPlay("'application/ogg; codecs=\"opus\"'"));
    314   EXPECT_EQ(kTheoraProbably,
    315             CanPlay("'application/ogg; codecs=\"theora, vorbis\"'"));
    316   EXPECT_EQ(kTheoraProbably,
    317             CanPlay("'application/ogg; codecs=\"theora, opus\"'"));
    318   EXPECT_EQ(kOpusProbably,
    319             CanPlay("'application/ogg; codecs=\"opus, vorbis\"'"));
    320 
    321   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"vp8\"'"));
    322   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"vp8.0\"'"));
    323   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"vp9\"'"));
    324   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"vp9.0\"'"));
    325 
    326   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"avc1\"'"));
    327   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"avc3\"'"));
    328   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"mp4a\"'"));
    329   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"avc1, mp4a\"'"));
    330   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"avc1, vorbis\"'"));
    331   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"avc3, mp4a\"'"));
    332   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"avc3, vorbis\"'"));
    333   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"avc1, vp8\"'"));
    334   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"avc3, vp9\"'"));
    335   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"avc1, avc3\"'"));
    336 
    337   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"avc1.4D401E\"'"));
    338   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"avc3.64001F\"'"));
    339   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"mp4a.40.2\"'"));
    340   EXPECT_EQ(kNot,
    341             CanPlay("'application/ogg; codecs=\"avc1.4D401E, mp4a.40.2\"'"));
    342   EXPECT_EQ(kNot,
    343             CanPlay("'application/ogg; codecs=\"avc3.64001F, mp4a.40.2\"'"));
    344   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"avc1.4D401E, vorbis\"'"));
    345   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"avc3.64001F, vorbis\"'"));
    346 
    347   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"Theora\"'"));
    348   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"Vorbis\"'"));
    349   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"Opus\"'"));
    350   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"Theora, Vorbis\"'"));
    351   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"Theora, Opus\"'"));
    352 
    353   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"unknown\"'"));
    354 }
    355 
    356 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp3) {
    357   EXPECT_EQ(kNot, CanPlay("'video/mp3'"));
    358   EXPECT_EQ(kNot, CanPlay("'video/mpeg'"));
    359   EXPECT_EQ(kNot, CanPlay("'video/x-mp3'"));
    360 
    361   // audio/mpeg without a codecs parameter (RFC 3003 compliant)
    362   EXPECT_EQ(kPropProbably, CanPlay("'audio/mpeg'"));
    363 
    364   // audio/mpeg with mp3 in codecs parameter. (Not RFC compliant, but
    365   // very common in the wild so it is a defacto standard).
    366   EXPECT_EQ(kPropProbably, CanPlay("'audio/mpeg; codecs=\"mp3\"'"));
    367 
    368   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"avc1\"'"));
    369   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"avc3\"'"));
    370 
    371   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"avc1.4D401E\"'"));
    372   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"avc3.64001F\"'"));
    373 
    374   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"mp4a\"'"));
    375   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"mp4a.40.2\"'"));
    376 
    377   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"avc1.unknown\"'"));
    378   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"avc3.unknown\"'"));
    379   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"mp4a.unknown\"'"));
    380 
    381   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"avc1.\"'"));
    382   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"avc3.\"'"));
    383   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"mp4a.\"'"));
    384 
    385   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"vorbis\"'"));
    386   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"opus\"'"));
    387   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"theora\"'"));
    388   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"vp8\"'"));
    389   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"vp8.0\"'"));
    390   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"vp9\"'"));
    391   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"vp9.0\"'"));
    392 
    393   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"AVC1\"'"));
    394   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"AVC1.4d401e\"'"));
    395   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"AVC3\"'"));
    396   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"AVC3.64001f\"'"));
    397   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"MP4A\"'"));
    398   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"MP4A.40.2\"'"));
    399   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"AVC1, MP4\"'"));
    400   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"AVC3, MP4\"'"));
    401   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\", AVC1.4D401E, MP4.40.2\"'"));
    402   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\", AVC3.64001F, MP4.40.2\"'"));
    403 
    404   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"avc2\"'"));
    405   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"avc4\"'"));
    406 
    407   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"avc1x\"'"));
    408   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"avc3x\"'"));
    409   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"mp4ax\"'"));
    410 
    411   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"unknown\"'"));
    412 
    413   // audio/mp3 does not allow any codecs parameter
    414   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp3'"));
    415 
    416   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"avc1\"'"));
    417   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"avc3\"'"));
    418 
    419   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"avc1.4D401E\"'"));
    420   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"avc3.64001F\"'"));
    421 
    422   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"mp4a\"'"));
    423   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"mp4a.40.2\"'"));
    424 
    425   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"avc1.unknown\"'"));
    426   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"avc3.unknown\"'"));
    427   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"mp4a.unknown\"'"));
    428 
    429   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"avc1.\"'"));
    430   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"avc3.\"'"));
    431   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"mp4a.\"'"));
    432 
    433   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"vorbis\"'"));
    434   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"opus\"'"));
    435   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"theora\"'"));
    436   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"vp8\"'"));
    437   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"vp8.0\"'"));
    438   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"vp9\"'"));
    439   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"vp9.0\"'"));
    440 
    441   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"AVC1\"'"));
    442   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"AVC1.4d401e\"'"));
    443   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"AVC3\"'"));
    444   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"AVC3.64001f\"'"));
    445   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"MP4A\"'"));
    446   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"MP4A.40.2\"'"));
    447   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"AVC1, MP4\"'"));
    448   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"AVC3, MP4\"'"));
    449   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\", AVC1.4D401E, MP4.40.2\"'"));
    450   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\", AVC3.64001F, MP4.40.2\"'"));
    451 
    452   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"avc2\"'"));
    453   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"avc4\"'"));
    454 
    455   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"avc1x\"'"));
    456   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"avc3x\"'"));
    457   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"mp4ax\"'"));
    458 
    459   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"unknown\"'"));
    460 
    461   // audio/x-mp3 does not allow any codecs parameter
    462   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-mp3'"));
    463 
    464   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"avc1\"'"));
    465   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"avc3\"'"));
    466 
    467   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"avc1.4D401E\"'"));
    468   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"avc3.64001F\"'"));
    469 
    470   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"mp4a\"'"));
    471   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"mp4a.40.2\"'"));
    472 
    473   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"avc1.unknown\"'"));
    474   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"avc3.unknown\"'"));
    475   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"mp4a.unknown\"'"));
    476 
    477   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"vorbis\"'"));
    478   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"opus\"'"));
    479   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"theora\"'"));
    480   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"vp8\"'"));
    481   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"vp8.0\"'"));
    482   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"vp9\"'"));
    483   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"vp9.0\"'"));
    484 
    485   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"AVC1\"'"));
    486   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"AVC1.4d401e\"'"));
    487   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"AVC3\"'"));
    488   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"AVC3.64001f\"'"));
    489   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"MP4A\"'"));
    490   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"MP4A.40.2\"'"));
    491   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"AVC1, MP4\"'"));
    492   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"AVC3, MP4\"'"));
    493   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\", AVC1.4D401E, MP4.40.2\"'"));
    494   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\", AVC3.64001F, MP4.40.2\"'"));
    495 
    496   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"avc2\"'"));
    497   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"avc4\"'"));
    498 
    499   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"avc1x\"'"));
    500   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"avc3x\"'"));
    501   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"mp4ax\"'"));
    502 
    503   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"unknown\"'"));
    504 }
    505 
    506 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp4) {
    507   // TODO(amogh.bihani): Change this expectation when bug 53193 is fixed.
    508   std::string PropAndVP9Probably = "";
    509 #if defined (OS_ANDROID)
    510   if (base::android::BuildInfo::GetInstance()->sdk_int() < 19)
    511     PropAndVP9Probably = "maybe";
    512   else
    513     PropAndVP9Probably = "probably";
    514 #else
    515 #if defined(USE_PROPRIETARY_CODECS)
    516   PropAndVP9Probably = "probably";
    517 #endif  // USE_PROPRIETARY_CODECS
    518 #endif  // OS_ANDROID
    519   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4'"));
    520 
    521   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1\"'"));
    522   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3\"'"));
    523   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"mp4a\"'"));
    524   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1, mp4a\"'"));
    525   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3, mp4a\"'"));
    526   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1, avc3\"'"));
    527 
    528   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.4D401E\"'"));
    529   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3.64001F\"'"));
    530   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"mp4a.40.2\"'"));
    531   EXPECT_EQ(kPropProbably,
    532             CanPlay("'video/mp4; codecs=\"avc1.4D401E, mp4a.40.2\"'"));
    533   EXPECT_EQ(kPropProbably,
    534             CanPlay("'video/mp4; codecs=\"avc3.64001F, mp4a.40.5\"'"));
    535 
    536   // TODO(amogh.bihani): Change these tests when bug 53193 is fixed.
    537   // http://crbug.com/53193 ----------------------------------------------------
    538   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.unknown\"'"));
    539   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3.unknown\"'"));
    540   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"mp4a.unknown\"'"));
    541 
    542   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.\"'"));
    543   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3.\"'"));
    544   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"mp4a.\"'"));
    545 
    546   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"vp8\"'"));
    547   EXPECT_EQ(PropAndVP9Probably, CanPlay("'video/mp4; codecs=\"vp9\"'"));
    548 
    549   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"vorbis\"'"));
    550   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1, vorbis\"'"));
    551   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3, vorbis\"'"));
    552   EXPECT_EQ(kPropProbably,
    553             CanPlay("'video/mp4; codecs=\"avc1.4D401E, vorbis\"'"));
    554   EXPECT_EQ(kPropProbably,
    555             CanPlay("'video/mp4; codecs=\"avc3.64001F, vorbis\"'"));
    556 
    557   EXPECT_EQ(kOpusAndPropProbably, CanPlay("'video/mp4; codecs=\"opus\"'"));
    558   EXPECT_EQ(kOpusAndPropProbably, CanPlay("'video/mp4; codecs=\"vp8, opus\"'"));
    559   EXPECT_EQ(kOpusAndPropProbably, CanPlay("'video/mp4; codecs=\"vp9, opus\"'"));
    560 
    561   EXPECT_EQ(kTheoraAndPropProbably, CanPlay("'video/mp4; codecs=\"theora\"'"));
    562   EXPECT_EQ(kTheoraAndPropProbably,
    563             CanPlay("'video/mp4; codecs=\"theora, vorbis\"'"));
    564   EXPECT_EQ(kTheoraAndPropProbably,
    565             CanPlay("'video/mp4; codecs=\"theora, mp4a\"'"));
    566   EXPECT_EQ(kTheoraAndPropProbably,
    567             CanPlay("'video/mp4; codecs=\"theora, mp4a.40.2\"'"));
    568   EXPECT_EQ(kTheoraAndPropProbably,
    569             CanPlay("'video/mp4; codecs=\"theora, avc1\"'"));
    570   EXPECT_EQ(kTheoraAndPropProbably,
    571             CanPlay("'video/mp4; codecs=\"theora, avc3\"'"));
    572   EXPECT_EQ(kTheoraAndPropProbably,
    573             CanPlay("'video/mp4; codecs=\"theora, avc1.4D401E\"'"));
    574   EXPECT_EQ(kTheoraAndPropProbably,
    575             CanPlay("'video/mp4; codecs=\"theora, avc3.64001F\"'"));
    576 
    577   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"AVC1\"'"));
    578   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"AVC1.4d401e\"'"));
    579   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"AVC3\"'"));
    580   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"AVC3.64001f\"'"));
    581   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"MP4A\"'"));
    582   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"MP4A.40.2\"'"));
    583   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"AVC1, MP4\"'"));
    584   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"AVC3, MP4\"'"));
    585   EXPECT_EQ(kPropMaybe,
    586             CanPlay("'video/mp4; codecs=\", AVC1.4D401E, MP4.40.2\"'"));
    587   EXPECT_EQ(kPropMaybe,
    588             CanPlay("'video/mp4; codecs=\", AVC3.64001F, MP4.40.2\"'"));
    589 
    590   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc2\"'"));
    591   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc4\"'"));
    592 
    593   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1x\"'"));
    594   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc3x\"'"));
    595   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"mp4ax\"'"));
    596 
    597   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"unknown\"'"));
    598   // ---------------------------------------------------------------------------
    599 
    600   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v'"));
    601 
    602   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc1\"'"));
    603   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc3\"'"));
    604   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"mp4a\"'"));
    605   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc1, mp4a\"'"));
    606   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a\"'"));
    607   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc1, avc3\"'"));
    608 
    609   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc1.4D401E\"'"));
    610   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc3.64001F\"'"));
    611   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"mp4a.40.2\"'"));
    612   EXPECT_EQ(kPropProbably,
    613             CanPlay("'video/x-m4v; codecs=\"avc1.4D401E, mp4a.40.2\"'"));
    614   EXPECT_EQ(kPropProbably,
    615             CanPlay("'video/x-m4v; codecs=\"avc3.64001F, mp4a.40.5\"'"));
    616 
    617   // TODO(amogh.bihani): Change these tests when bug 53193 is fixed.
    618   // http://crbug.com/53193 ----------------------------------------------------
    619   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc1.unknown\"'"));
    620   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc3.unknown\"'"));
    621   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"mp4a.unknown\"'"));
    622 
    623   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc1.\"'"));
    624   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc3.\"'"));
    625   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"mp4a.\"'"));
    626 
    627   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"vp8\"'"));
    628   EXPECT_EQ(PropAndVP9Probably, CanPlay("'video/x-m4v; codecs=\"vp9\"'"));
    629 
    630   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"vorbis\"'"));
    631   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc1, vorbis\"'"));
    632   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc3, vorbis\"'"));
    633   EXPECT_EQ(kPropProbably,
    634             CanPlay("'video/x-m4v; codecs=\"avc1.4D401E, vorbis\"'"));
    635   EXPECT_EQ(kPropProbably,
    636             CanPlay("'video/x-m4v; codecs=\"avc3.64001F, vorbis\"'"));
    637 
    638   EXPECT_EQ(kOpusAndPropProbably, CanPlay("'video/x-m4v; codecs=\"opus\"'"));
    639   EXPECT_EQ(kOpusAndPropProbably,
    640             CanPlay("'video/x-m4v; codecs=\"vp8, opus\"'"));
    641   EXPECT_EQ(kOpusAndPropProbably,
    642             CanPlay("'video/x-m4v; codecs=\"vp9, opus\"'"));
    643 
    644   EXPECT_EQ(kTheoraAndPropProbably,
    645             CanPlay("'video/x-m4v; codecs=\"theora\"'"));
    646   EXPECT_EQ(kTheoraAndPropProbably,
    647             CanPlay("'video/x-m4v; codecs=\"theora, vorbis\"'"));
    648   EXPECT_EQ(kTheoraAndPropProbably,
    649             CanPlay("'video/x-m4v; codecs=\"theora, mp4a\"'"));
    650   EXPECT_EQ(kTheoraAndPropProbably,
    651             CanPlay("'video/x-m4v; codecs=\"theora, mp4a.40.2\"'"));
    652   EXPECT_EQ(kTheoraAndPropProbably,
    653             CanPlay("'video/x-m4v; codecs=\"theora, avc1\"'"));
    654   EXPECT_EQ(kTheoraAndPropProbably,
    655             CanPlay("'video/x-m4v; codecs=\"theora, avc3\"'"));
    656   EXPECT_EQ(kTheoraAndPropProbably,
    657             CanPlay("'video/x-m4v; codecs=\"theora, avc1.4D401E\"'"));
    658   EXPECT_EQ(kTheoraAndPropProbably,
    659             CanPlay("'video/x-m4v; codecs=\"theora, avc3.64001F\"'"));
    660 
    661   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"AVC1\"'"));
    662   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"AVC1.4d401e\"'"));
    663   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"AVC3\"'"));
    664   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"AVC3.64001f\"'"));
    665   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"MP4A\"'"));
    666   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"MP4A.40.2\"'"));
    667   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"AVC1, MP4\"'"));
    668   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"AVC3, MP4\"'"));
    669   EXPECT_EQ(kPropMaybe,
    670             CanPlay("'video/x-m4v; codecs=\", AVC1.4D401E, MP4.40.2\"'"));
    671   EXPECT_EQ(kPropMaybe,
    672             CanPlay("'video/x-m4v; codecs=\", AVC3.64001F, MP4.40.2\"'"));
    673 
    674   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc2\"'"));
    675   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc4\"'"));
    676 
    677   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1x\"'"));
    678   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3x\"'"));
    679   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"mp4ax\"'"));
    680 
    681   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"unknown\"'"));
    682   // ---------------------------------------------------------------------------
    683 
    684   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4'"));
    685   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a\"'"));
    686   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.2\"'"));
    687 
    688   // TODO(amogh.bihani): Change these tests when bug 53193 is fixed.
    689   // http://crbug.com/53193 ----------------------------------------------------
    690   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"avc1\"'"));
    691   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"avc3\"'"));
    692   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"avc1, mp4a\"'"));
    693   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"avc3, mp4a\"'"));
    694 
    695   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"avc1.4D401E\"'"));
    696   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"avc3.64001F\"'"));
    697 
    698   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"avc1.unknown\"'"));
    699   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"avc3.unknown\"'"));
    700   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.unknown\"'"));
    701 
    702   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"avc1.\"'"));
    703   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"avc3.\"'"));
    704   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.\"'"));
    705 
    706   EXPECT_EQ(kPropProbably,
    707             CanPlay("'audio/mp4; codecs=\"avc1.4D401E, mp4a.40.2\"'"));
    708   EXPECT_EQ(kPropProbably,
    709             CanPlay("'audio/mp4; codecs=\"avc3.64001F mp4a.40.2\"'"));
    710   EXPECT_EQ(kPropProbably,
    711             CanPlay("'audio/mp4; codecs=\"mp4a, vorbis\"'"));
    712   EXPECT_EQ(kPropProbably,
    713             CanPlay("'audio/mp4; codecs=\"mp4a.40.2, vorbis\"'"));
    714 
    715   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"vorbis\"'"));
    716 
    717   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"vp8\"'"));
    718   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"vp8.0\"'"));
    719   EXPECT_EQ(PropAndVP9Probably, CanPlay("'audio/mp4; codecs=\"vp9\"'"));
    720   EXPECT_EQ(PropAndVP9Probably, CanPlay("'audio/mp4; codecs=\"vp9.0\"'"));
    721 
    722   EXPECT_EQ(kOpusAndPropProbably, CanPlay("'audio/mp4; codecs=\"opus\"'"));
    723   EXPECT_EQ(kOpusAndPropProbably,
    724             CanPlay("'audio/mp4; codecs=\"mp4a, opus\"'"));
    725   EXPECT_EQ(kOpusAndPropProbably,
    726             CanPlay("'audio/mp4; codecs=\"vorbis, opus\"'"));
    727   EXPECT_EQ(kOpusAndPropProbably, CanPlay("'audio/mp4; codecs=\"vp8, opus\"'"));
    728   EXPECT_EQ(kOpusAndPropProbably, CanPlay("'audio/mp4; codecs=\"vp9, opus\"'"));
    729 
    730   EXPECT_EQ(kTheoraAndPropProbably, CanPlay("'audio/mp4; codecs=\"theora\"'"));
    731   EXPECT_EQ(kTheoraAndPropProbably,
    732             CanPlay("'audio/mp4; codecs=\"theora, vorbis\"'"));
    733   EXPECT_EQ(kTheoraAndPropProbably,
    734             CanPlay("'audio/mp4; codecs=\"theora, mp4a\"'"));
    735   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"avc1, vorbis\"'"));
    736 
    737   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"AVC1\"'"));
    738   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"AVC1.4d401e\"'"));
    739   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"AVC3\"'"));
    740   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"AVC3.64001f\"'"));
    741   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"MP4A\"'"));
    742   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"MP4A.40.2\"'"));
    743   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"AVC1, MP4\"'"));
    744   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"AVC3, MP4\"'"));
    745   EXPECT_EQ(kPropMaybe,
    746             CanPlay("'audio/mp4; codecs=\", AVC1.4D401E, MP4.40.2\"'"));
    747   EXPECT_EQ(kPropMaybe,
    748             CanPlay("'audio/mp4; codecs=\", AVC3.64001F, MP4.40.2\"'"));
    749 
    750   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"avc2\"'"));
    751   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"avc4\"'"));
    752 
    753   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"avc1x\"'"));
    754   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"avc3x\"'"));
    755   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"mp4ax\"'"));
    756 
    757   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"unknown\"'"));
    758   // ---------------------------------------------------------------------------
    759 
    760   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a'"));
    761   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a\"'"));
    762   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.2\"'"));
    763 
    764   // TODO(amogh.bihani): Change these tests when bug 53193 is fixed.
    765   // http://crbug.com/53193 ----------------------------------------------------
    766   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"avc1\"'"));
    767   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"avc3\"'"));
    768   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"avc1, mp4a\"'"));
    769   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"avc3, mp4a\"'"));
    770 
    771   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"avc1.4D401E\"'"));
    772   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"avc3.64001F\"'"));
    773 
    774   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"avc1.unknown\"'"));
    775   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"avc3.unknown\"'"));
    776   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.unknown\"'"));
    777 
    778   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"avc1.\"'"));
    779   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"avc3.\"'"));
    780   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.\"'"));
    781 
    782   EXPECT_EQ(kPropProbably,
    783             CanPlay("'audio/x-m4a; codecs=\"avc1.4D401E, mp4a.40.2\"'"));
    784   EXPECT_EQ(kPropProbably,
    785             CanPlay("'audio/x-m4a; codecs=\"avc3.64001F mp4a.40.2\"'"));
    786   EXPECT_EQ(kPropProbably,
    787             CanPlay("'audio/x-m4a; codecs=\"mp4a, vorbis\"'"));
    788   EXPECT_EQ(kPropProbably,
    789             CanPlay("'audio/x-m4a; codecs=\"mp4a.40.2, vorbis\"'"));
    790 
    791   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"vorbis\"'"));
    792 
    793   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"vp8\"'"));
    794   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"vp8.0\"'"));
    795   EXPECT_EQ(PropAndVP9Probably, CanPlay("'audio/x-m4a; codecs=\"vp9\"'"));
    796   EXPECT_EQ(PropAndVP9Probably, CanPlay("'audio/x-m4a; codecs=\"vp9.0\"'"));
    797 
    798   EXPECT_EQ(kOpusAndPropProbably, CanPlay("'audio/x-m4a; codecs=\"opus\"'"));
    799   EXPECT_EQ(kOpusAndPropProbably,
    800             CanPlay("'audio/x-m4a; codecs=\"mp4a, opus\"'"));
    801   EXPECT_EQ(kOpusAndPropProbably,
    802             CanPlay("'audio/x-m4a; codecs=\"vorbis, opus\"'"));
    803   EXPECT_EQ(kOpusAndPropProbably,
    804             CanPlay("'audio/x-m4a; codecs=\"vp8, opus\"'"));
    805   EXPECT_EQ(kOpusAndPropProbably,
    806             CanPlay("'audio/x-m4a; codecs=\"vp9, opus\"'"));
    807 
    808   EXPECT_EQ(kTheoraAndPropProbably,
    809             CanPlay("'audio/x-m4a; codecs=\"theora\"'"));
    810   EXPECT_EQ(kTheoraAndPropProbably,
    811             CanPlay("'audio/x-m4a; codecs=\"theora, vorbis\"'"));
    812   EXPECT_EQ(kTheoraAndPropProbably,
    813             CanPlay("'audio/x-m4a; codecs=\"theora, mp4a\"'"));
    814   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"avc1, vorbis\"'"));
    815 
    816   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"AVC1\"'"));
    817   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"AVC1.4d401e\"'"));
    818   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"AVC3\"'"));
    819   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"AVC3.64001f\"'"));
    820   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"MP4A\"'"));
    821   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"MP4A.40.2\"'"));
    822   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"AVC1, MP4\"'"));
    823   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"AVC3, MP4\"'"));
    824   EXPECT_EQ(kPropMaybe,
    825             CanPlay("'audio/x-m4a; codecs=\", AVC1.4D401E, MP4.40.2\"'"));
    826   EXPECT_EQ(kPropMaybe,
    827             CanPlay("'audio/x-m4a; codecs=\", AVC3.64001F, MP4.40.2\"'"));
    828 
    829   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"avc2\"'"));
    830   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"avc4\"'"));
    831 
    832   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"avc1x\"'"));
    833   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"avc3x\"'"));
    834   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"mp4ax\"'"));
    835 
    836   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"unknown\"'"));
    837   // ---------------------------------------------------------------------------
    838 }
    839 
    840 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_HLS) {
    841   // HLS are supported only on Android IceCreamSandwich and above (API level 14)
    842   std::string HLSProbably = "";
    843   std::string HLSMaybe = "";
    844   std::string HLSAndVP9Probably = "";
    845 #if defined(OS_ANDROID)
    846   int sdk = base::android::BuildInfo::GetInstance()->sdk_int();
    847   if (sdk > 13) {
    848     HLSProbably = "probably";
    849     HLSMaybe = "maybe";
    850     if (sdk < 19)
    851       HLSAndVP9Probably = "maybe";
    852     else
    853       HLSAndVP9Probably = "probably";
    854   }
    855 #endif
    856   EXPECT_EQ(HLSMaybe, CanPlay("'application/x-mpegurl'"));
    857 
    858   EXPECT_EQ(HLSProbably,
    859             CanPlay("'application/x-mpegurl; codecs=\"avc1\"'"));
    860   EXPECT_EQ(HLSProbably,
    861             CanPlay("'application/x-mpegurl; codecs=\"avc3\"'"));
    862   EXPECT_EQ(HLSProbably,
    863             CanPlay("'application/x-mpegurl; codecs=\"mp4a\"'"));
    864   EXPECT_EQ(HLSProbably,
    865             CanPlay("'application/x-mpegurl; codecs=\"avc1, mp4a\"'"));
    866   EXPECT_EQ(HLSProbably,
    867             CanPlay("'application/x-mpegurl; codecs=\"avc3, mp4a\"'"));
    868 
    869   EXPECT_EQ(HLSProbably,
    870             CanPlay("'application/x-mpegurl; codecs=\"avc1.4D401E\"'"));
    871   EXPECT_EQ(HLSProbably,
    872             CanPlay("'application/x-mpegurl; codecs=\"avc3.64001F\"'"));
    873   EXPECT_EQ(HLSProbably,
    874             CanPlay("'application/x-mpegurl; codecs=\"mp4a.40.2\"'"));
    875   EXPECT_EQ(HLSProbably,
    876         CanPlay("'application/x-mpegurl; codecs=\"avc1.4D401E, mp4a.40.2\"'"));
    877   EXPECT_EQ(HLSProbably,
    878         CanPlay("'application/x-mpegurl; codecs=\"avc3.64001F, mp4a.40.5\"'"));
    879 
    880   // TODO(amogh.bihani): Change these tests when bug 53193 is fixed.
    881   // http://crbug.com/53193 ----------------------------------------------------
    882   EXPECT_EQ(HLSProbably,
    883             CanPlay("'application/x-mpegurl; codecs=\"avc1.unknown\"'"));
    884   EXPECT_EQ(HLSProbably,
    885             CanPlay("'application/x-mpegurl; codecs=\"avc3.unknown\"'"));
    886   EXPECT_EQ(HLSProbably,
    887             CanPlay("'application/x-mpegurl; codecs=\"mp4a.unknown\"'"));
    888 
    889   EXPECT_EQ(HLSProbably, CanPlay("'application/x-mpegurl; codecs=\"avc1.\"'"));
    890   EXPECT_EQ(HLSProbably, CanPlay("'application/x-mpegurl; codecs=\"avc3.\"'"));
    891   EXPECT_EQ(HLSProbably, CanPlay("'application/x-mpegurl; codecs=\"mp4a.\"'"));
    892 
    893   EXPECT_EQ(HLSProbably, CanPlay("'application/x-mpegurl; codecs=\"vp8\"'"));
    894   EXPECT_EQ(HLSAndVP9Probably,
    895             CanPlay("'application/x-mpegurl; codecs=\"vp9\"'"));
    896   EXPECT_EQ(HLSProbably,
    897             CanPlay("'application/x-mpegurl; codecs=\"vorbis\"'"));
    898 
    899   EXPECT_EQ(HLSProbably,
    900             CanPlay("'application/x-mpegurl; codecs=\"avc1, vorbis\"'"));
    901   EXPECT_EQ(HLSProbably,
    902             CanPlay("'application/x-mpegurl; codecs=\"avc3, vorbis\"'"));
    903   EXPECT_EQ(HLSProbably,
    904             CanPlay("'application/x-mpegurl; codecs=\"avc1.4D401E, vorbis\"'"));
    905   EXPECT_EQ(HLSProbably,
    906             CanPlay("'application/x-mpegurl; codecs=\"avc3.64001F, vorbis\"'"));
    907 
    908   EXPECT_EQ(HLSMaybe, CanPlay("'application/x-mpegurl; codecs=\"opus\"'"));
    909   EXPECT_EQ(HLSMaybe,
    910             CanPlay("'application/x-mpegurl; codecs=\"vp8, opus\"'"));
    911   EXPECT_EQ(HLSMaybe,
    912             CanPlay("'application/x-mpegurl; codecs=\"vp9, opus\"'"));
    913 
    914   EXPECT_EQ(HLSMaybe,
    915             CanPlay("'application/x-mpegurl; codecs=\"theora\"'"));
    916   EXPECT_EQ(HLSMaybe,
    917             CanPlay("'application/x-mpegurl; codecs=\"theora, vorbis\"'"));
    918   EXPECT_EQ(HLSMaybe,
    919             CanPlay("'application/x-mpegurl; codecs=\"theora, mp4a\"'"));
    920   EXPECT_EQ(HLSMaybe,
    921             CanPlay("'application/x-mpegurl; codecs=\"theora, mp4a.40.2\"'"));
    922 
    923   EXPECT_EQ(HLSMaybe, CanPlay("'application/x-mpegurl; codecs=\"AVC1\"'"));
    924   EXPECT_EQ(HLSMaybe,
    925             CanPlay("'application/x-mpegurl; codecs=\"AVC1.4d401e\"'"));
    926   EXPECT_EQ(HLSMaybe, CanPlay("'application/x-mpegurl; codecs=\"AVC3\"'"));
    927   EXPECT_EQ(HLSMaybe,
    928             CanPlay("'application/x-mpegurl; codecs=\"AVC3.64001f\"'"));
    929   EXPECT_EQ(HLSMaybe, CanPlay("'application/x-mpegurl; codecs=\"MP4A\"'"));
    930   EXPECT_EQ(HLSMaybe,
    931             CanPlay("'application/x-mpegurl; codecs=\"MP4A.40.2\"'"));
    932   EXPECT_EQ(HLSMaybe,
    933             CanPlay("'application/x-mpegurl; codecs=\"AVC1, MP4\"'"));
    934   EXPECT_EQ(HLSMaybe,
    935             CanPlay("'application/x-mpegurl; codecs=\"AVC3, MP4\"'"));
    936   EXPECT_EQ(HLSMaybe,
    937         CanPlay("'application/x-mpegurl; codecs=\", AVC1.4D401E, MP4.40.2\"'"));
    938   EXPECT_EQ(HLSMaybe,
    939         CanPlay("'application/x-mpegurl; codecs=\", AVC3.64001F, MP4.40.2\"'"));
    940 
    941   EXPECT_EQ(HLSMaybe,
    942             CanPlay("'application/x-mpegurl; codecs=\"avc2\"'"));
    943   EXPECT_EQ(HLSMaybe,
    944             CanPlay("'application/x-mpegurl; codecs=\"avc4\"'"));
    945 
    946   EXPECT_EQ(HLSMaybe,
    947             CanPlay("'application/x-mpegurl; codecs=\"avc1x\"'"));
    948   EXPECT_EQ(HLSMaybe,
    949             CanPlay("'application/x-mpegurl; codecs=\"avc3x\"'"));
    950   EXPECT_EQ(HLSMaybe,
    951             CanPlay("'application/x-mpegurl; codecs=\"mp4ax\"'"));
    952 
    953   EXPECT_EQ(HLSMaybe,
    954             CanPlay("'application/x-mpegurl; codecs=\"unknown\"'"));
    955   // ---------------------------------------------------------------------------
    956 
    957   EXPECT_EQ(HLSMaybe, CanPlay("'application/vnd.apple.mpegurl'"));
    958 
    959   EXPECT_EQ(HLSProbably,
    960             CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1\"'"));
    961   EXPECT_EQ(HLSProbably,
    962             CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3\"'"));
    963   EXPECT_EQ(HLSProbably,
    964             CanPlay("'application/vnd.apple.mpegurl; codecs=\"mp4a\"'"));
    965   EXPECT_EQ(HLSProbably,
    966             CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1, mp4a\"'"));
    967   EXPECT_EQ(HLSProbably,
    968             CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3, mp4a\"'"));
    969 
    970   EXPECT_EQ(HLSProbably,
    971             CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1.4D401E\"'"));
    972   EXPECT_EQ(HLSProbably,
    973             CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3.64001F\"'"));
    974   EXPECT_EQ(HLSProbably,
    975             CanPlay("'application/vnd.apple.mpegurl; codecs=\"mp4a.40.2\"'"));
    976 
    977   // TODO(amogh.bihani): Change these tests when bug 53193 is fixed.
    978   // http://crbug.com/53193 ----------------------------------------------------
    979   EXPECT_EQ(HLSProbably,
    980           CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1.unknown\"'"));
    981   EXPECT_EQ(HLSProbably,
    982           CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3.unknown\"'"));
    983   EXPECT_EQ(HLSProbably,
    984           CanPlay("'application/vnd.apple.mpegurl; codecs=\"mp4a.unknown\"'"));
    985 
    986   EXPECT_EQ(HLSProbably,
    987           CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1.\"'"));
    988   EXPECT_EQ(HLSProbably,
    989           CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3.\"'"));
    990   EXPECT_EQ(HLSProbably,
    991           CanPlay("'application/vnd.apple.mpegurl; codecs=\"mp4a.\"'"));
    992 
    993   EXPECT_EQ(HLSProbably,
    994             CanPlay("'application/vnd.apple.mpegurl; codecs=\"vp8\"'"));
    995   EXPECT_EQ(HLSAndVP9Probably,
    996             CanPlay("'application/vnd.apple.mpegurl; codecs=\"vp9\"'"));
    997   EXPECT_EQ(HLSProbably,
    998             CanPlay("'application/vnd.apple.mpegurl; codecs=\"vorbis\"'"));
    999 
   1000   EXPECT_EQ(HLSProbably,
   1001            CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1, vorbis\"'"));
   1002   EXPECT_EQ(HLSProbably,
   1003            CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3, vorbis\"'"));
   1004   EXPECT_EQ(HLSProbably,
   1005     CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1.4D401E, vorbis\"'"));
   1006   EXPECT_EQ(HLSProbably,
   1007     CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3.64001F, vorbis\"'"));
   1008 
   1009   EXPECT_EQ(HLSMaybe,
   1010             CanPlay("'application/vnd.apple.mpegurl; codecs=\"opus\"'"));
   1011   EXPECT_EQ(HLSMaybe,
   1012             CanPlay("'application/vnd.apple.mpegurl; codecs=\"vp8, opus\"'"));
   1013   EXPECT_EQ(HLSMaybe,
   1014             CanPlay("'application/vnd.apple.mpegurl; codecs=\"vp9, opus\"'"));
   1015 
   1016   EXPECT_EQ(HLSMaybe,
   1017             CanPlay("'application/vnd.apple.mpegurl; codecs=\"theora\"'"));
   1018   EXPECT_EQ(HLSMaybe,
   1019         CanPlay("'application/vnd.apple.mpegurl; codecs=\"theora, vorbis\"'"));
   1020   EXPECT_EQ(HLSMaybe,
   1021           CanPlay("'application/vnd.apple.mpegurl; codecs=\"theora, mp4a\"'"));
   1022   EXPECT_EQ(HLSMaybe,
   1023       CanPlay("'application/vnd.apple.mpegurl; codecs=\"theora, mp4a.40.2\"'"));
   1024 
   1025   EXPECT_EQ(HLSMaybe,
   1026             CanPlay("'application/vnd.apple.mpegurl; codecs=\"AVC1\"'"));
   1027   EXPECT_EQ(HLSMaybe,
   1028             CanPlay("'application/vnd.apple.mpegurl; codecs=\"AVC1.4d401e\"'"));
   1029   EXPECT_EQ(HLSMaybe,
   1030             CanPlay("'application/vnd.apple.mpegurl; codecs=\"AVC3\"'"));
   1031   EXPECT_EQ(HLSMaybe,
   1032             CanPlay("'application/vnd.apple.mpegurl; codecs=\"AVC3.64001f\"'"));
   1033   EXPECT_EQ(HLSMaybe,
   1034             CanPlay("'application/vnd.apple.mpegurl; codecs=\"MP4A\"'"));
   1035   EXPECT_EQ(HLSMaybe,
   1036             CanPlay("'application/vnd.apple.mpegurl; codecs=\"MP4A.40.2\"'"));
   1037   EXPECT_EQ(HLSMaybe,
   1038             CanPlay("'application/vnd.apple.mpegurl; codecs=\"AVC1, MP4\"'"));
   1039   EXPECT_EQ(HLSMaybe,
   1040             CanPlay("'application/vnd.apple.mpegurl; codecs=\"AVC3, MP4\"'"));
   1041   EXPECT_EQ(HLSMaybe,
   1042             CanPlay("'application/vnd.apple.mpegurl; "
   1043                     "codecs=\", AVC1.4D401E, MP4.40.2\"'"));
   1044   EXPECT_EQ(HLSMaybe,
   1045             CanPlay("'application/vnd.apple.mpegurl; "
   1046                     "codecs=\", AVC3.64001F, MP4.40.2\"'"));
   1047 
   1048   EXPECT_EQ(HLSMaybe,
   1049             CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc2\"'"));
   1050   EXPECT_EQ(HLSMaybe,
   1051             CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc4\"'"));
   1052 
   1053   EXPECT_EQ(HLSMaybe,
   1054             CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1x\"'"));
   1055   EXPECT_EQ(HLSMaybe,
   1056             CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3x\"'"));
   1057   EXPECT_EQ(HLSMaybe,
   1058             CanPlay("'application/vnd.apple.mpegurl; codecs=\"mp4ax\"'"));
   1059 
   1060   EXPECT_EQ(HLSMaybe,
   1061             CanPlay("'application/vnd.apple.mpegurl; codecs=\"unknown\"'"));
   1062   // ---------------------------------------------------------------------------
   1063 }
   1064 
   1065 }  // namespace content
   1066