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 "chrome/browser/safe_browsing/local_safebrowsing_test_server.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/command_line.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/path_service.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/strings/string_number_conversions.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/values.h" 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/common/chrome_paths.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/test/python_utils.h" 13b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)#include "net/test/spawned_test_server/spawned_test_server.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LocalSafeBrowsingTestServer::LocalSafeBrowsingTestServer( 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& data_file) 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) : net::LocalTestServer(net::SpawnedTestServer::TYPE_HTTP, 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) net::SpawnedTestServer::kLocalhost, 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath()), 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data_file_(data_file) { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LocalSafeBrowsingTestServer::~LocalSafeBrowsingTestServer() {} 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool LocalSafeBrowsingTestServer::GetTestServerPath( 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath* testserver_path) const { 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath testserver_dir; 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!PathService::Get(chrome::DIR_TEST_DATA, &testserver_dir)) { 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LOG(ERROR) << "Failed to get DIR_SOURCE_ROOT"; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) testserver_dir = testserver_dir 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .Append(FILE_PATH_LITERAL("safe_browsing")); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *testserver_path = testserver_dir.Append(FILE_PATH_LITERAL( 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "safe_browsing_testserver.py")); 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool LocalSafeBrowsingTestServer::SetPythonPath() const { 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!net::LocalTestServer::SetPythonPath()) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Locate the Python code generated by the protocol buffers compiler. 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath pyproto_dir; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!GetPyProtoPath(&pyproto_dir)) { 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LOG(ERROR) << "Cannot find pyproto dir for generated code."; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AppendToPythonPath(pyproto_dir.AppendASCII("google")); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool LocalSafeBrowsingTestServer::GenerateAdditionalArguments( 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::DictionaryValue* arguments) const { 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arguments->SetString("data-file", data_file_.value()); 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 61