17d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
27d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
37d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// found in the LICENSE file.
47d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
57d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/bind.h"
69ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/message_loop/message_loop.h"
7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "content/renderer/media/android/media_info_loader.h"
84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "content/test/mock_webframeclient.h"
94e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "content/test/mock_weburlloader.h"
10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "third_party/WebKit/public/platform/WebMediaPlayer.h"
117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/platform/WebURLError.h"
127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/platform/WebURLRequest.h"
137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/platform/WebURLResponse.h"
14a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "third_party/WebKit/public/web/WebLocalFrame.h"
15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "third_party/WebKit/public/web/WebView.h"
167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
177d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)using ::testing::_;
187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)using ::testing::InSequence;
197d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)using ::testing::NiceMock;
207d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
21a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochusing blink::WebLocalFrame;
22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebString;
23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebURLError;
24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebURLResponse;
25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebView;
267d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace content {
287d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
297d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)static const char* kHttpUrl = "http://test";
307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)static const char kHttpRedirectToSameDomainUrl1[] = "http://test/ing";
317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)static const char kHttpRedirectToSameDomainUrl2[] = "http://test/ing2";
327d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)static const char kHttpRedirectToDifferentDomainUrl1[] = "http://test2";
335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)static const char kHttpDataUrl[] = "data:audio/wav;base64,UklGRhwMAABXQVZFZm10";
347d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
357d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)static const int kHttpOK = 200;
367d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)static const int kHttpNotFound = 404;
377d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
387d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)class MediaInfoLoaderTest : public testing::Test {
397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) public:
407d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  MediaInfoLoaderTest()
41a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      : view_(WebView::create(NULL)), frame_(WebLocalFrame::create(&client_)) {
425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    view_->setMainFrame(frame_);
437d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  }
447d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
457d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  virtual ~MediaInfoLoaderTest() {
467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    view_->close();
475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    frame_->close();
487d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  }
497d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
507d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  void Initialize(
517d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      const char* url,
52f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      blink::WebMediaPlayer::CORSMode cors_mode) {
537d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    gurl_ = GURL(url);
547d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
557d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    loader_.reset(new MediaInfoLoader(
567d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)        gurl_, cors_mode,
577d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)        base::Bind(&MediaInfoLoaderTest::ReadyCallback,
587d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                   base::Unretained(this))));
597d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
607d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    // |test_loader_| will be used when Start() is called.
617d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    url_loader_ = new NiceMock<MockWebURLLoader>();
62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    loader_->test_loader_ = scoped_ptr<blink::WebURLLoader>(url_loader_);
637d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  }
647d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
657d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  void Start() {
667d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    InSequence s;
677d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    EXPECT_CALL(*url_loader_, loadAsynchronously(_, _));
687d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    loader_->Start(view_->mainFrame());
697d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  }
707d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
717d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  void Stop() {
727d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    InSequence s;
737d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    EXPECT_CALL(*url_loader_, cancel());
747d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    loader_.reset();
757d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  }
767d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
777d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  void Redirect(const char* url) {
787d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    GURL redirect_url(url);
79f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    blink::WebURLRequest new_request(redirect_url);
80f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    blink::WebURLResponse redirect_response(gurl_);
817d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
827d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    loader_->willSendRequest(url_loader_, new_request, redirect_response);
837d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
847d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    base::MessageLoop::current()->RunUntilIdle();
857d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  }
867d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
877d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  void SendResponse(
887d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      int http_status, MediaInfoLoader::Status expected_status) {
896e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    EXPECT_CALL(*this, ReadyCallback(expected_status, _, _, _));
907d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    EXPECT_CALL(*url_loader_, cancel());
917d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
927d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    WebURLResponse response(gurl_);
937d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    response.setHTTPHeaderField(WebString::fromUTF8("Content-Length"),
947d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                                WebString::fromUTF8("0"));
957d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    response.setExpectedContentLength(0);
967d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    response.setHTTPStatusCode(http_status);
977d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    loader_->didReceiveResponse(url_loader_, response);
987d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  }
997d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
1007d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  void FailLoad() {
1016e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    EXPECT_CALL(*this, ReadyCallback(
1026e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        MediaInfoLoader::kFailed, _, _, _));
1037d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    loader_->didFail(url_loader_, WebURLError());
1047d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  }
1057d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
1066e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  MOCK_METHOD4(ReadyCallback,
1076e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)               void(MediaInfoLoader::Status, const GURL&, const GURL&, bool));
1087d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
1097d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) protected:
1107d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  GURL gurl_;
1117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
1127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  scoped_ptr<MediaInfoLoader> loader_;
1137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  NiceMock<MockWebURLLoader>* url_loader_;
1147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
1157d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  MockWebFrameClient client_;
1167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  WebView* view_;
117a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  WebLocalFrame* frame_;
1187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
1197d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  base::MessageLoop message_loop_;
1207d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
1217d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) private:
1227d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(MediaInfoLoaderTest);
1237d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)};
1247d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
1257d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)TEST_F(MediaInfoLoaderTest, StartStop) {
126f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  Initialize(kHttpUrl, blink::WebMediaPlayer::CORSModeUnspecified);
1277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  Start();
1287d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  Stop();
1297d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
1307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
1317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)TEST_F(MediaInfoLoaderTest, LoadFailure) {
132f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  Initialize(kHttpUrl, blink::WebMediaPlayer::CORSModeUnspecified);
1337d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  Start();
1347d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  FailLoad();
1357d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
1367d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
1375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST_F(MediaInfoLoaderTest, DataUri) {
1385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  Initialize(kHttpDataUrl, blink::WebMediaPlayer::CORSModeUnspecified);
1395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  Start();
1405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  SendResponse(0, MediaInfoLoader::kOk);
1415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
1425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1437d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)TEST_F(MediaInfoLoaderTest, HasSingleOriginNoRedirect) {
1447d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  // Make sure no redirect case works as expected.
145f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  Initialize(kHttpUrl, blink::WebMediaPlayer::CORSModeUnspecified);
1467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  Start();
1477d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  SendResponse(kHttpOK, MediaInfoLoader::kOk);
1487d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  EXPECT_TRUE(loader_->HasSingleOrigin());
1497d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
1507d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
1517d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)TEST_F(MediaInfoLoaderTest, HasSingleOriginSingleRedirect) {
1527d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  // Test redirect to the same domain.
153f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  Initialize(kHttpUrl, blink::WebMediaPlayer::CORSModeUnspecified);
1547d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  Start();
1557d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  Redirect(kHttpRedirectToSameDomainUrl1);
1567d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  SendResponse(kHttpOK, MediaInfoLoader::kOk);
1577d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  EXPECT_TRUE(loader_->HasSingleOrigin());
1587d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
1597d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
1607d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)TEST_F(MediaInfoLoaderTest, HasSingleOriginDoubleRedirect) {
1617d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  // Test redirect twice to the same domain.
162f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  Initialize(kHttpUrl, blink::WebMediaPlayer::CORSModeUnspecified);
1637d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  Start();
1647d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  Redirect(kHttpRedirectToSameDomainUrl1);
1657d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  Redirect(kHttpRedirectToSameDomainUrl2);
1667d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  SendResponse(kHttpOK, MediaInfoLoader::kOk);
1677d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  EXPECT_TRUE(loader_->HasSingleOrigin());
1687d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
1697d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
1707d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)TEST_F(MediaInfoLoaderTest, HasSingleOriginDifferentDomain) {
1717d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  // Test redirect to a different domain.
172f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  Initialize(kHttpUrl, blink::WebMediaPlayer::CORSModeUnspecified);
1737d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  Start();
1747d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  Redirect(kHttpRedirectToDifferentDomainUrl1);
1757d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  SendResponse(kHttpOK, MediaInfoLoader::kOk);
1767d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  EXPECT_FALSE(loader_->HasSingleOrigin());
1777d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
1787d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
1797d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)TEST_F(MediaInfoLoaderTest, HasSingleOriginMultipleDomains) {
1807d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  // Test redirect to the same domain and then to a different domain.
181f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  Initialize(kHttpUrl, blink::WebMediaPlayer::CORSModeUnspecified);
1827d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  Start();
1837d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  Redirect(kHttpRedirectToSameDomainUrl1);
1847d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  Redirect(kHttpRedirectToDifferentDomainUrl1);
1857d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  SendResponse(kHttpOK, MediaInfoLoader::kOk);
1867d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  EXPECT_FALSE(loader_->HasSingleOrigin());
1877d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
1887d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
1897d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)TEST_F(MediaInfoLoaderTest, CORSAccessCheckPassed) {
190f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  Initialize(kHttpUrl, blink::WebMediaPlayer::CORSModeUseCredentials);
1917d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  Start();
1927d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  SendResponse(kHttpOK, MediaInfoLoader::kOk);
1937d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  EXPECT_TRUE(loader_->DidPassCORSAccessCheck());
1947d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
1957d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
1967d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)TEST_F(MediaInfoLoaderTest, CORSAccessCheckFailed) {
197f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  Initialize(kHttpUrl, blink::WebMediaPlayer::CORSModeUseCredentials);
1987d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  Start();
1997d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  SendResponse(kHttpNotFound, MediaInfoLoader::kFailed);
2007d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  EXPECT_FALSE(loader_->DidPassCORSAccessCheck());
2017d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
2027d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
203eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}  // namespace content
204