Chromium Code Reviews| Index: content/browser/utility_process_mojo_client_browsertest.cc |
| diff --git a/content/browser/utility_process_mojo_client_browsertest.cc b/content/browser/utility_process_mojo_client_browsertest.cc |
| index e3f031a65e02d539639a0254480e6761779ab81f..6ac13b5d5314d41080575a34c51fa54c8ca9ab41 100644 |
| --- a/content/browser/utility_process_mojo_client_browsertest.cc |
| +++ b/content/browser/utility_process_mojo_client_browsertest.cc |
| @@ -20,7 +20,7 @@ namespace content { |
| // Test fixture used to make different Mojo calls to the utility process. |
| class UtilityProcessMojoClientBrowserTest : public ContentBrowserTest { |
| public: |
| - void StartMojoService(bool disable_sandbox) { |
| + void StartMojoService(bool disable_sandbox, bool run_elevated = false) { |
|
Sam McNally
2017/01/16 04:16:20
This would be nicer as an enum {SANDBOXED, UNSANDB
Noel Gordon
2017/01/16 11:09:58
Acknowledged.
Noel Gordon
2017/01/18 06:02:03
... but somewhat unrelated to this change: maybe b
|
| mojo_client_.reset(new UtilityProcessMojoClient<mojom::TestService>( |
| base::ASCIIToUTF16("TestMojoProcess"))); |
| @@ -31,6 +31,14 @@ class UtilityProcessMojoClientBrowserTest : public ContentBrowserTest { |
| // This test case needs to have the sandbox disabled. |
| if (disable_sandbox) |
| mojo_client_->set_disable_sandbox(); |
| +#if defined(OS_WIN) |
| + // This test case needs utility process privilege elevation. |
| + if (run_elevated) { |
| + CHECK(disable_sandbox); |
| + mojo_client_->set_run_elevated(); |
| + } |
| +#endif // defined(OS_WIN) |
| + |
| mojo_client_->Start(); |
| } |
| @@ -136,6 +144,28 @@ IN_PROC_BROWSER_TEST_F(UtilityProcessMojoClientBrowserTest, SandboxSuccess) { |
| EXPECT_TRUE(sandbox_succeeded_); |
| EXPECT_FALSE(error_happened_); |
| } |
| -#endif |
| +#endif // !defined(OS_ANDROID) |
| + |
| +#if defined(OS_WIN) |
| +// Call a function that succeeds with process elevation. Elevation is only |
| +// available on WIN, and is used to permit UAC prompts for operations that |
| +// need user approval before proceeding. |
| +IN_PROC_BROWSER_TEST_F(UtilityProcessMojoClientBrowserTest, ElevatedSuccess) { |
| + base::RunLoop run_loop; |
| + done_closure_ = run_loop.QuitClosure(); |
| + |
| + bool elevated_utility_process = true; |
| + StartMojoService(true, elevated_utility_process); |
| + |
| + mojo_client_->service()->CreateFolder( |
| + base::Bind(&UtilityProcessMojoClientBrowserTest::OnCreateFolderFinished, |
| + base::Unretained(this))); |
| + |
| + run_loop.Run(); |
| + EXPECT_TRUE(response_received_); |
| + EXPECT_TRUE(sandbox_succeeded_); |
| + EXPECT_FALSE(error_happened_); |
| +} |
| +#endif // defined(OS_WIN) |
| } // namespace content |