15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/render_view_test.h" 7bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch#include "content/renderer/pepper/url_request_info_util.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/proxy/connection.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/proxy/url_request_info_resource.h" 10d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "ppapi/shared_impl/proxy_lock.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/shared_impl/test_globals.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/shared_impl/url_request_info_data.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/thunk/thunk.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 15868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "third_party/WebKit/public/platform/WebURLRequest.h" 167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebFrame.h" 177d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebFrameClient.h" 187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebView.h" 1990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "webkit/common/user_agent/user_agent.h" 2090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "webkit/common/user_agent/user_agent_util.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This test is a end-to-end test from the resource to the WebKit request 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// object. The actual resource implementation is so simple, it makes sense to 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// test it by making sure the conversion routines actually work at the same 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// time. 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebCString; 28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebFrame; 29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebFrameClient; 30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebString; 31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebView; 32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebURL; 33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebURLRequest; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool IsExpected(const WebCString& web_string, const char* expected) { 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* result = web_string.data(); 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return strcmp(result, expected) == 0; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool IsExpected(const WebString& web_string, const char* expected) { 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return IsExpected(web_string.utf8(), expected); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The base class destructor is protected, so derive. 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TestWebFrameClient : public WebFrameClient { 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using ppapi::proxy::URLRequestInfoResource; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using ppapi::URLRequestInfoData; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5558e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdochnamespace content { 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5758e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdochclass URLRequestInfoTest : public RenderViewTest { 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 592385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch URLRequestInfoTest() : pp_instance_(1234) { 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetUp() OVERRIDE { 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RenderViewTest::SetUp(); 64d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) ppapi::ProxyLock::DisableLockingOnThreadForTest(); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test_globals_.GetResourceTracker()->DidCreateInstance(pp_instance_); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This resource doesn't do IPC, so a null connection is fine. 69ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch info_ = new URLRequestInfoResource(ppapi::proxy::Connection(), 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pp_instance_, 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLRequestInfoData()); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void TearDown() OVERRIDE { 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test_globals_.GetResourceTracker()->DidDeleteInstance(pp_instance_); 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RenderViewTest::TearDown(); 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool GetDownloadToFile() { 802385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch WebURLRequest web_request; 812385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch URLRequestInfoData data = info_->GetData(); 82d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) if (!CreateWebURLRequest(pp_instance_, &data, GetMainFrame(), &web_request)) 832385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch return false; 842385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch return web_request.downloadToFile(); 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebCString GetURL() { 882385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch WebURLRequest web_request; 892385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch URLRequestInfoData data = info_->GetData(); 90d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) if (!CreateWebURLRequest(pp_instance_, &data, GetMainFrame(), &web_request)) 912385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch return WebCString(); 922385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch return web_request.url().spec(); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebString GetMethod() { 962385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch WebURLRequest web_request; 972385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch URLRequestInfoData data = info_->GetData(); 98d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) if (!CreateWebURLRequest(pp_instance_, &data, GetMainFrame(), &web_request)) 992385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch return WebString(); 1002385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch return web_request.httpMethod(); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebString GetHeaderValue(const char* field) { 1042385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch WebURLRequest web_request; 1052385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch URLRequestInfoData data = info_->GetData(); 106d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) if (!CreateWebURLRequest(pp_instance_, &data, GetMainFrame(), &web_request)) 1072385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch return WebString(); 1082385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch return web_request.httpHeaderField(WebString::fromUTF8(field)); 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool SetBooleanProperty(PP_URLRequestProperty prop, bool b) { 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return info_->SetBooleanProperty(prop, b); 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool SetStringProperty(PP_URLRequestProperty prop, const std::string& s) { 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return info_->SetStringProperty(prop, s); 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Instance pp_instance_; 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Needs to be alive for resource tracking to work. 121ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch ppapi::TestGlobals test_globals_; 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<URLRequestInfoResource> info_; 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(URLRequestInfoTest, GetInterface) { 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const PPB_URLRequestInfo* request_info = 128ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch ppapi::thunk::GetPPB_URLRequestInfo_1_0_Thunk(); 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(request_info); 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(request_info->Create); 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(request_info->IsURLRequestInfo); 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(request_info->SetProperty); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(request_info->AppendDataToBody); 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(request_info->AppendFileToBody); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(URLRequestInfoTest, AsURLRequestInfo) { 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(info_, info_->AsPPB_URLRequestInfo_API()); 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(URLRequestInfoTest, StreamToFile) { 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetStringProperty(PP_URLREQUESTPROPERTY_URL, "http://www.google.com"); 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(GetDownloadToFile()); 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(SetBooleanProperty( 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_URLREQUESTPROPERTY_STREAMTOFILE, true)); 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(GetDownloadToFile()); 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(SetBooleanProperty( 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_URLREQUESTPROPERTY_STREAMTOFILE, false)); 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(GetDownloadToFile()); 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(URLRequestInfoTest, FollowRedirects) { 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetData().follow_redirects); 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(SetBooleanProperty( 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_URLREQUESTPROPERTY_FOLLOWREDIRECTS, false)); 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetData().follow_redirects); 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(SetBooleanProperty( 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_URLREQUESTPROPERTY_FOLLOWREDIRECTS, true)); 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetData().follow_redirects); 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(URLRequestInfoTest, RecordDownloadProgress) { 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetData().record_download_progress); 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(SetBooleanProperty( 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_URLREQUESTPROPERTY_RECORDDOWNLOADPROGRESS, true)); 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetData().record_download_progress); 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(SetBooleanProperty( 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_URLREQUESTPROPERTY_RECORDDOWNLOADPROGRESS, false)); 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetData().record_download_progress); 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(URLRequestInfoTest, RecordUploadProgress) { 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetData().record_upload_progress); 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(SetBooleanProperty( 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_URLREQUESTPROPERTY_RECORDUPLOADPROGRESS, true)); 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetData().record_upload_progress); 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(SetBooleanProperty( 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_URLREQUESTPROPERTY_RECORDUPLOADPROGRESS, false)); 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetData().record_upload_progress); 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(URLRequestInfoTest, AllowCrossOriginRequests) { 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetData().allow_cross_origin_requests); 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(SetBooleanProperty( 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_URLREQUESTPROPERTY_ALLOWCROSSORIGINREQUESTS, true)); 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetData().allow_cross_origin_requests); 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(SetBooleanProperty( 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_URLREQUESTPROPERTY_ALLOWCROSSORIGINREQUESTS, false)); 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetData().allow_cross_origin_requests); 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(URLRequestInfoTest, AllowCredentials) { 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetData().allow_credentials); 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(SetBooleanProperty( 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_URLREQUESTPROPERTY_ALLOWCREDENTIALS, true)); 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetData().allow_credentials); 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(SetBooleanProperty( 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_URLREQUESTPROPERTY_ALLOWCREDENTIALS, false)); 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetData().allow_credentials); 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(URLRequestInfoTest, SetURL) { 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* url = "http://www.google.com/"; 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(SetStringProperty( 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_URLREQUESTPROPERTY_URL, url)); 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(IsExpected(GetURL(), url)); 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(URLRequestInfoTest, JavascriptURL) { 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* url = "javascript:foo = bar"; 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(URLRequestRequiresUniversalAccess(info_->GetData())); 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetStringProperty(PP_URLREQUESTPROPERTY_URL, url); 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(URLRequestRequiresUniversalAccess(info_->GetData())); 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(URLRequestInfoTest, SetMethod) { 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test default method is "GET". 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(IsExpected(GetMethod(), "GET")); 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(SetStringProperty( 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_URLREQUESTPROPERTY_METHOD, "POST")); 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(IsExpected(GetMethod(), "POST")); 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(URLRequestInfoTest, SetHeaders) { 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test default header field. 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(IsExpected( 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetHeaderValue("foo"), "")); 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test that we can set a header field. 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(SetStringProperty( 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_URLREQUESTPROPERTY_HEADERS, "foo: bar")); 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(IsExpected( 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetHeaderValue("foo"), "bar")); 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test that we can set multiple header fields using \n delimiter. 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(SetStringProperty( 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_URLREQUESTPROPERTY_HEADERS, "foo: bar\nbar: baz")); 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(IsExpected( 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetHeaderValue("foo"), "bar")); 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(IsExpected( 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetHeaderValue("bar"), "baz")); 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(bbudge) Unit tests for AppendDataToBody, AppendFileToBody. 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25758e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch} // namespace content 258