| Index: webkit/glue/media/simple_data_source_unittest.cc
|
| ===================================================================
|
| --- webkit/glue/media/simple_data_source_unittest.cc (revision 68125)
|
| +++ webkit/glue/media/simple_data_source_unittest.cc (working copy)
|
| @@ -6,15 +6,9 @@
|
| #include "media/base/filters.h"
|
| #include "media/base/mock_filter_host.h"
|
| #include "media/base/mock_filters.h"
|
| -#include "net/base/net_errors.h"
|
| -#include "third_party/WebKit/WebKit/chromium/public/WebFrame.h"
|
| -#include "third_party/WebKit/WebKit/chromium/public/WebURLError.h"
|
| -#include "third_party/WebKit/WebKit/chromium/public/WebURLLoader.h"
|
| -#include "third_party/WebKit/WebKit/chromium/public/WebURLRequest.h"
|
| -#include "third_party/WebKit/WebKit/chromium/public/WebURLResponse.h"
|
| +#include "webkit/glue/media/mock_media_resource_loader_bridge_factory.h"
|
| #include "webkit/glue/media/simple_data_source.h"
|
| -#include "webkit/glue/mock_webframe.h"
|
| -#include "webkit/glue/mock_weburlloader_impl.h"
|
| +#include "webkit/glue/mock_resource_loader_bridge.h"
|
|
|
| using ::testing::_;
|
| using ::testing::DoAll;
|
| @@ -27,11 +21,6 @@
|
| using ::testing::StrictMock;
|
| using ::testing::WithArgs;
|
|
|
| -using WebKit::WebURLError;
|
| -using WebKit::WebURLLoader;
|
| -using WebKit::WebURLRequest;
|
| -using WebKit::WebURLResponse;
|
| -
|
| namespace {
|
|
|
| const int kDataSize = 1024;
|
| @@ -50,56 +39,68 @@
|
| class SimpleDataSourceTest : public testing::Test {
|
| public:
|
| SimpleDataSourceTest() {
|
| + bridge_factory_.reset(
|
| + new NiceMock<MockMediaResourceLoaderBridgeFactory>());
|
| + bridge_.reset(new NiceMock<MockResourceLoaderBridge>());
|
| +
|
| for (int i = 0; i < kDataSize; ++i) {
|
| data_[i] = i;
|
| }
|
| }
|
|
|
| virtual ~SimpleDataSourceTest() {
|
| - ignore_result(frame_.release());
|
| + if (bridge_.get())
|
| + EXPECT_CALL(*bridge_, OnDestroy());
|
| + if (bridge_factory_.get())
|
| + EXPECT_CALL(*bridge_factory_, OnDestroy());
|
| }
|
|
|
| void InitializeDataSource(const char* url) {
|
| - gurl_ = GURL(url);
|
| -
|
| - frame_.reset(new NiceMock<MockWebFrame>());
|
| - url_loader_ = new NiceMock<MockWebURLLoader>();
|
| -
|
| data_source_ = new SimpleDataSource(MessageLoop::current(),
|
| - frame_.get());
|
| + bridge_factory_.get());
|
| + CHECK(data_source_);
|
|
|
| // There is no need to provide a message loop to data source.
|
| data_source_->set_host(&host_);
|
| - data_source_->SetURLLoaderForTest(url_loader_);
|
|
|
| + // First a bridge is created.
|
| InSequence s;
|
| + EXPECT_CALL(*bridge_factory_, CreateBridge(GURL(url), _, -1, -1))
|
| + .WillOnce(Return(bridge_.get()));
|
| + EXPECT_CALL(*bridge_, Start(data_source_.get()))
|
| + .WillOnce(Return(true));
|
|
|
| data_source_->Initialize(url, callback_.NewCallback());
|
| +
|
| MessageLoop::current()->RunAllPending();
|
| }
|
|
|
| void RequestSucceeded(bool is_loaded) {
|
| - WebURLResponse response(gurl_);
|
| - response.setExpectedContentLength(kDataSize);
|
| + ResourceResponseInfo info;
|
| + info.content_length = kDataSize;
|
|
|
| - data_source_->didReceiveResponse(NULL, response);
|
| + data_source_->OnReceivedResponse(info, false);
|
| int64 size;
|
| EXPECT_TRUE(data_source_->GetSize(&size));
|
| EXPECT_EQ(kDataSize, size);
|
|
|
| - for (int i = 0; i < kDataSize; ++i) {
|
| - data_source_->didReceiveData(NULL, data_ + i, 1);
|
| - }
|
| + for (int i = 0; i < kDataSize; ++i)
|
| + data_source_->OnReceivedData(data_ + i, 1);
|
|
|
| EXPECT_CALL(host_, SetLoaded(is_loaded));
|
|
|
| InSequence s;
|
| + EXPECT_CALL(*bridge_, OnDestroy())
|
| + .WillOnce(Invoke(this, &SimpleDataSourceTest::ReleaseBridge));
|
| EXPECT_CALL(host_, SetTotalBytes(kDataSize));
|
| EXPECT_CALL(host_, SetBufferedBytes(kDataSize));
|
| EXPECT_CALL(callback_, OnFilterCallback());
|
| EXPECT_CALL(callback_, OnCallbackDestroyed());
|
|
|
| - data_source_->didFinishLoading(NULL, 0);
|
| + URLRequestStatus status;
|
| + status.set_status(URLRequestStatus::SUCCESS);
|
| + status.set_os_error(0);
|
| + data_source_->OnCompletedRequest(status, "", base::Time());
|
|
|
| // Let the tasks to be executed.
|
| MessageLoop::current()->RunAllPending();
|
| @@ -107,23 +108,28 @@
|
|
|
| void RequestFailed() {
|
| InSequence s;
|
| + EXPECT_CALL(*bridge_, OnDestroy())
|
| + .WillOnce(Invoke(this, &SimpleDataSourceTest::ReleaseBridge));
|
| EXPECT_CALL(host_, SetError(media::PIPELINE_ERROR_NETWORK));
|
| EXPECT_CALL(callback_, OnFilterCallback());
|
| EXPECT_CALL(callback_, OnCallbackDestroyed());
|
|
|
| - WebURLError error;
|
| - error.reason = net::ERR_FAILED;
|
| - data_source_->didFail(NULL, error);
|
| + URLRequestStatus status;
|
| + status.set_status(URLRequestStatus::FAILED);
|
| + status.set_os_error(100);
|
| + data_source_->OnCompletedRequest(status, "", base::Time());
|
|
|
| // Let the tasks to be executed.
|
| MessageLoop::current()->RunAllPending();
|
| }
|
|
|
| void DestroyDataSource() {
|
| + EXPECT_CALL(*bridge_factory_, OnDestroy())
|
| + .WillOnce(Invoke(this, &SimpleDataSourceTest::ReleaseBridgeFactory));
|
| +
|
| StrictMock<media::MockFilterCallback> callback;
|
| EXPECT_CALL(callback, OnFilterCallback());
|
| EXPECT_CALL(callback, OnCallbackDestroyed());
|
| -
|
| data_source_->Stop(callback.NewCallback());
|
| MessageLoop::current()->RunAllPending();
|
|
|
| @@ -142,17 +148,23 @@
|
| }
|
| }
|
|
|
| + void ReleaseBridge() {
|
| + ignore_result(bridge_.release());
|
| + }
|
| +
|
| + void ReleaseBridgeFactory() {
|
| + ignore_result(bridge_factory_.release());
|
| + }
|
| +
|
| MOCK_METHOD1(ReadCallback, void(size_t size));
|
|
|
| protected:
|
| - GURL gurl_;
|
| scoped_ptr<MessageLoop> message_loop_;
|
| - NiceMock<MockWebURLLoader>* url_loader_;
|
| + scoped_ptr<NiceMock<MockMediaResourceLoaderBridgeFactory> > bridge_factory_;
|
| + scoped_ptr<NiceMock<MockResourceLoaderBridge> > bridge_;
|
| scoped_refptr<SimpleDataSource> data_source_;
|
| StrictMock<media::MockFilterHost> host_;
|
| StrictMock<media::MockFilterCallback> callback_;
|
| - scoped_ptr<NiceMock<MockWebFrame> > frame_;
|
| -
|
| char data_[kDataSize];
|
|
|
| DISALLOW_COPY_AND_ASSIGN(SimpleDataSourceTest);
|
| @@ -177,16 +189,13 @@
|
| }
|
|
|
| TEST_F(SimpleDataSourceTest, InitializeData) {
|
| - frame_.reset(new NiceMock<MockWebFrame>());
|
| - url_loader_ = new NiceMock<MockWebURLLoader>();
|
| -
|
| data_source_ = new SimpleDataSource(MessageLoop::current(),
|
| - frame_.get());
|
| + bridge_factory_.get());
|
| EXPECT_TRUE(data_source_->IsUrlSupported(kDataUrl));
|
| + CHECK(data_source_);
|
|
|
| // There is no need to provide a message loop to data source.
|
| data_source_->set_host(&host_);
|
| - data_source_->SetURLLoaderForTest(url_loader_);
|
|
|
| EXPECT_CALL(host_, SetLoaded(true));
|
| EXPECT_CALL(host_, SetTotalBytes(sizeof(kDataUrlDecoded)));
|
| @@ -209,7 +218,9 @@
|
| TEST_F(SimpleDataSourceTest, StopWhenDownloading) {
|
| InitializeDataSource(kHttpUrl);
|
|
|
| - EXPECT_CALL(*url_loader_, cancel());
|
| + EXPECT_CALL(*bridge_, Cancel());
|
| + EXPECT_CALL(*bridge_, OnDestroy())
|
| + .WillOnce(Invoke(this, &SimpleDataSourceTest::ReleaseBridge));
|
| EXPECT_CALL(callback_, OnCallbackDestroyed());
|
| DestroyDataSource();
|
| }
|
|
|