12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/tests/test_host_resolver_private_disallowed.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/cpp/module.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/cpp/private/net_address_private.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/tests/test_utils.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/tests/testing_instance.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)REGISTER_TEST_CASE(HostResolverPrivateDisallowed); 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TestHostResolverPrivateDisallowed::TestHostResolverPrivateDisallowed( 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingInstance* instance) 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : TestCase(instance) { 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool TestHostResolverPrivateDisallowed::Init() { 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool host_resolver_private_is_available = 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pp::HostResolverPrivate::IsAvailable(); 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!host_resolver_private_is_available) 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) instance_->AppendError("PPB_HostResolver_Private interface not available"); 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool init_host_port = 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetLocalHostPort(instance_->pp_instance(), &host_, &port_); 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!init_host_port) 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) instance_->AppendError("Can't init host and port"); 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return host_resolver_private_is_available && 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) init_host_port && 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EnsureRunningOverHTTP(); 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void TestHostResolverPrivateDisallowed::RunTests(const std::string& filter) { 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) RUN_CALLBACK_TEST(TestHostResolverPrivateDisallowed, Resolve, filter); 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)std::string TestHostResolverPrivateDisallowed::TestResolve() { 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pp::HostResolverPrivate host_resolver(instance_); 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_HostResolver_Private_Hint hint; 42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch hint.family = PP_NETADDRESSFAMILY_PRIVATE_UNSPECIFIED; 43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch hint.flags = PP_HOST_RESOLVER_PRIVATE_FLAGS_CANONNAME; 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TestCompletionCallback callback(instance_->pp_instance(), callback_type()); 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) callback.WaitForResult( 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) host_resolver.Resolve(host_, port_, hint, callback.GetCallback())); 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CHECK_CALLBACK_BEHAVIOR(callback); 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_EQ(PP_ERROR_FAILED, callback.result()); 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PASS(); 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 51