| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/media/test_license_server.h" |
| |
| #include "base/command_line.h" |
| #include "base/files/file_util.h" |
| #include "base/process/kill.h" |
| #include "base/process/launch.h" |
| #include "chrome/browser/media/test_license_server_config.h" |
| |
| |
| TestLicenseServer::TestLicenseServer( |
| scoped_ptr<TestLicenseServerConfig> server_config) |
| : server_config_(server_config.Pass()), |
| license_server_process_(base::kNullProcessHandle) { |
| } |
| |
| TestLicenseServer::~TestLicenseServer() { |
| Stop(); |
| } |
| |
| bool TestLicenseServer::Start() { |
| if (license_server_process_ != base::kNullProcessHandle) |
| return true; |
| |
| if (!server_config_->IsPlatformSupported()) { |
| DVLOG(0) << "License server is not supported on current platform."; |
| return false; |
| } |
| |
| CommandLine command_line(CommandLine::NO_PROGRAM); |
| if (!server_config_->GetServerCommandLine(&command_line)) { |
| DVLOG(0) << "Could not get server command line to launch."; |
| return false; |
| } |
| |
| DVLOG(0) << "Starting test license server " << |
| command_line.GetCommandLineString(); |
| if (!base::LaunchProcess(command_line, base::LaunchOptions(), |
| &license_server_process_)) { |
| DVLOG(0) << "Failed to start test license server!"; |
| return false; |
| } |
| DCHECK_NE(license_server_process_, base::kNullProcessHandle); |
| return true; |
| } |
| |
| bool TestLicenseServer::Stop() { |
| if (license_server_process_ == base::kNullProcessHandle) |
| return true; |
| DVLOG(0) << "Killing license server."; |
| bool kill_succeeded = base::KillProcess(license_server_process_, 1, true); |
| |
| if (kill_succeeded) { |
| base::CloseProcessHandle(license_server_process_); |
| license_server_process_ = base::kNullProcessHandle; |
| } else { |
| DVLOG(1) << "Kill failed?!"; |
| } |
| return kill_succeeded; |
| } |
| |
| std::string TestLicenseServer::GetServerURL() { |
| return server_config_->GetServerURL(); |
| } |