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 "android_webview/native/aw_media_url_interceptor.h" 8#include "base/memory/scoped_ptr.h" 9 10#include "testing/gtest/include/gtest/gtest.h" 11 12using testing::Test; 13 14namespace android_webview { 15 16namespace { 17 18// Sentinel value to check whether the fields have been set. 19const int UNSET_VALUE = -1; 20 21class AwMediaUrlInterceptorTest : public Test { 22 public: 23 AwMediaUrlInterceptorTest() 24 : fd_(UNSET_VALUE), offset_(UNSET_VALUE), size_(UNSET_VALUE), 25 url_interceptor_(new AwMediaUrlInterceptor()){ 26 } 27 protected: 28 int fd_; 29 int64 offset_; 30 int64 size_; 31 scoped_ptr<AwMediaUrlInterceptor> url_interceptor_; 32}; 33 34} // namespace 35 36TEST_F(AwMediaUrlInterceptorTest, TestInterceptValidAssetUrl) { 37 // This asset file exists in the android_webview_unittests-debug.apk. 38 // See gyp rule android_webview_unittests_apk. 39 const std::string valid_asset_url( 40 "file:///android_asset/asset_file.ogg"); 41 42 ASSERT_TRUE(url_interceptor_->Intercept( 43 valid_asset_url, &fd_, &offset_, &size_)); 44 EXPECT_NE(UNSET_VALUE, fd_); 45 EXPECT_NE(UNSET_VALUE, offset_); 46 EXPECT_NE(UNSET_VALUE, size_); 47} 48 49TEST_F(AwMediaUrlInterceptorTest, TestInterceptInvalidAssetUrl) { 50 // This asset file does not exist in the android_webview_unittests-debug.apk. 51 // See gyp rule android_webview_unittests_apk. 52 const std::string invalid_asset_url( 53 "file:///android_asset/file_does_not_exist.ogg"); 54 55 ASSERT_FALSE(url_interceptor_->Intercept( 56 invalid_asset_url, &fd_, &offset_, &size_)); 57 EXPECT_EQ(UNSET_VALUE, fd_); 58 EXPECT_EQ(UNSET_VALUE, offset_); 59 EXPECT_EQ(UNSET_VALUE, size_); 60} 61 62TEST_F(AwMediaUrlInterceptorTest, TestInterceptNonAssetUrl) { 63 // This url does not refer to an asset in the apk. 64 const std::string non_asset_url("file:///sdcard/file.txt"); 65 66 ASSERT_FALSE(url_interceptor_->Intercept( 67 non_asset_url, &fd_, &offset_, &size_)); 68 EXPECT_EQ(UNSET_VALUE, fd_); 69 EXPECT_EQ(UNSET_VALUE, offset_); 70 EXPECT_EQ(UNSET_VALUE, size_); 71} 72 73} // namespace android_webview 74