| Index: sandbox/src/policy_target_test.cc
|
| ===================================================================
|
| --- sandbox/src/policy_target_test.cc (revision 140102)
|
| +++ sandbox/src/policy_target_test.cc (working copy)
|
| @@ -1,8 +1,7 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Copyright (c) 2010 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 "base/win/scoped_process_information.h"
|
| #include "base/win/windows_version.h"
|
| #include "sandbox/src/sandbox.h"
|
| #include "sandbox/src/sandbox_factory.h"
|
| @@ -150,9 +149,9 @@
|
| // Use default values to create a new process.
|
| STARTUPINFO startup_info = {0};
|
| startup_info.cb = sizeof(startup_info);
|
| - base::win::ScopedProcessInformation process_info;
|
| + PROCESS_INFORMATION process_info;
|
| if (!::CreateProcessW(L"foo.exe", L"foo.exe", NULL, NULL, FALSE, 0,
|
| - NULL, NULL, &startup_info, process_info.Receive()))
|
| + NULL, NULL, &startup_info, &process_info))
|
| return SBOX_TEST_SUCCEEDED;
|
| return SBOX_TEST_FAILED;
|
| }
|
| @@ -234,32 +233,34 @@
|
|
|
| // Launch the app.
|
| ResultCode result = SBOX_ALL_OK;
|
| - base::win::ScopedProcessInformation target;
|
| + PROCESS_INFORMATION target = {0};
|
|
|
| TargetPolicy* policy = broker->CreatePolicy();
|
| policy->SetAlternateDesktop(false);
|
| policy->SetTokenLevel(USER_INTERACTIVE, USER_LOCKDOWN);
|
| - result = broker->SpawnTarget(
|
| - prog_name, arguments.c_str(), policy, target.Receive());
|
| + result = broker->SpawnTarget(prog_name, arguments.c_str(), policy, &target);
|
| policy->Release();
|
|
|
| EXPECT_EQ(SBOX_ALL_OK, result);
|
|
|
| - EXPECT_EQ(1, ::ResumeThread(target.thread_handle()));
|
| + EXPECT_EQ(1, ::ResumeThread(target.hThread));
|
|
|
| - EXPECT_EQ(WAIT_TIMEOUT, ::WaitForSingleObject(target.process_handle(), 2000));
|
| + EXPECT_EQ(WAIT_TIMEOUT, ::WaitForSingleObject(target.hProcess, 2000));
|
|
|
| - EXPECT_NE(::GetThreadDesktop(target.thread_id()),
|
| + EXPECT_NE(::GetThreadDesktop(target.dwThreadId),
|
| ::GetThreadDesktop(::GetCurrentThreadId()));
|
|
|
| std::wstring desktop_name = policy->GetAlternateDesktop();
|
| HDESK desk = ::OpenDesktop(desktop_name.c_str(), 0, FALSE, DESKTOP_ENUMERATE);
|
| EXPECT_TRUE(NULL != desk);
|
| EXPECT_TRUE(::CloseDesktop(desk));
|
| - EXPECT_TRUE(::TerminateProcess(target.process_handle(), 0));
|
| + EXPECT_TRUE(::TerminateProcess(target.hProcess, 0));
|
|
|
| - ::WaitForSingleObject(target.process_handle(), INFINITE);
|
| + ::WaitForSingleObject(target.hProcess, INFINITE);
|
|
|
| + EXPECT_TRUE(::CloseHandle(target.hProcess));
|
| + EXPECT_TRUE(::CloseHandle(target.hThread));
|
| +
|
| // Close the desktop handle.
|
| temp_policy = broker->CreatePolicy();
|
| temp_policy->DestroyAlternateDesktop();
|
| @@ -294,22 +295,21 @@
|
|
|
| // Launch the app.
|
| ResultCode result = SBOX_ALL_OK;
|
| - base::win::ScopedProcessInformation target;
|
| + PROCESS_INFORMATION target = {0};
|
|
|
| TargetPolicy* policy = broker->CreatePolicy();
|
| policy->SetAlternateDesktop(true);
|
| policy->SetTokenLevel(USER_INTERACTIVE, USER_LOCKDOWN);
|
| - result = broker->SpawnTarget(
|
| - prog_name, arguments.c_str(), policy, target.Receive());
|
| + result = broker->SpawnTarget(prog_name, arguments.c_str(), policy, &target);
|
| policy->Release();
|
|
|
| EXPECT_EQ(SBOX_ALL_OK, result);
|
|
|
| - EXPECT_EQ(1, ::ResumeThread(target.thread_handle()));
|
| + EXPECT_EQ(1, ::ResumeThread(target.hThread));
|
|
|
| - EXPECT_EQ(WAIT_TIMEOUT, ::WaitForSingleObject(target.process_handle(), 2000));
|
| + EXPECT_EQ(WAIT_TIMEOUT, ::WaitForSingleObject(target.hProcess, 2000));
|
|
|
| - EXPECT_NE(::GetThreadDesktop(target.thread_id()),
|
| + EXPECT_NE(::GetThreadDesktop(target.dwThreadId),
|
| ::GetThreadDesktop(::GetCurrentThreadId()));
|
|
|
| std::wstring desktop_name = policy->GetAlternateDesktop();
|
| @@ -324,10 +324,13 @@
|
| HDESK desk = ::OpenDesktop(desktop_name.c_str(), 0, FALSE, DESKTOP_ENUMERATE);
|
| // This should fail if the desktop is really on another window station.
|
| EXPECT_FALSE(NULL != desk);
|
| - EXPECT_TRUE(::TerminateProcess(target.process_handle(), 0));
|
| + EXPECT_TRUE(::TerminateProcess(target.hProcess, 0));
|
|
|
| - ::WaitForSingleObject(target.process_handle(), INFINITE);
|
| + ::WaitForSingleObject(target.hProcess, INFINITE);
|
|
|
| + EXPECT_TRUE(::CloseHandle(target.hProcess));
|
| + EXPECT_TRUE(::CloseHandle(target.hThread));
|
| +
|
| // Close the desktop handle.
|
| temp_policy = broker->CreatePolicy();
|
| temp_policy->DestroyAlternateDesktop();
|
|
|