Index: chrome/renderer/renderer_main_unittest.cc |
=================================================================== |
--- chrome/renderer/renderer_main_unittest.cc (revision 81801) |
+++ chrome/renderer/renderer_main_unittest.cc (working copy) |
@@ -1,126 +0,0 @@ |
-// 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/compiler_specific.h" |
-#include "base/message_loop.h" |
-#include "base/process_util.h" |
-#include "base/test/multiprocess_test.h" |
-#include "base/test/test_timeouts.h" |
-#include "chrome/common/chrome_switches.h" |
-#include "content/common/main_function_params.h" |
-#include "ipc/ipc_channel.h" |
-#include "ipc/ipc_switches.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
-#include "testing/multiprocess_func_list.h" |
- |
-// TODO(port): Bring up this test this on other platforms. |
-#if defined(OS_POSIX) |
- |
-using base::ProcessHandle; |
- |
-const char kRendererTestChannelName[] = "test"; |
- |
-extern int RendererMain(const MainFunctionParams& parameters); |
- |
-// TODO(port): The IPC Channel tests have a class with extremely similar |
-// functionality, we should combine them. |
-class RendererMainTest : public base::MultiProcessTest { |
- protected: |
- RendererMainTest() {} |
- |
- // Create a new MessageLoopForIO For each test. |
- virtual void SetUp(); |
- virtual void TearDown(); |
- |
- // Spawns a child process of the specified type |
- base::ProcessHandle SpawnChild(const std::string& procname, |
- IPC::Channel* channel); |
- |
- virtual CommandLine MakeCmdLine(const std::string& procname, |
- bool debug_on_start) OVERRIDE; |
- |
- // Created around each test instantiation. |
- MessageLoopForIO *message_loop_; |
-}; |
- |
-void RendererMainTest::SetUp() { |
- MultiProcessTest::SetUp(); |
- |
- // Construct a fresh IO Message loop for the duration of each test. |
- message_loop_ = new MessageLoopForIO(); |
-} |
- |
-void RendererMainTest::TearDown() { |
- delete message_loop_; |
- message_loop_ = NULL; |
- |
- MultiProcessTest::TearDown(); |
-} |
- |
-ProcessHandle RendererMainTest::SpawnChild(const std::string& procname, |
- IPC::Channel* channel) { |
- base::file_handle_mapping_vector fds_to_map; |
- const int ipcfd = channel->GetClientFileDescriptor(); |
- if (ipcfd > -1) { |
- fds_to_map.push_back(std::pair<int,int>(ipcfd, 3)); |
- } |
- |
- return MultiProcessTest::SpawnChild(procname, fds_to_map, false); |
-} |
- |
-CommandLine RendererMainTest::MakeCmdLine(const std::string& procname, |
- bool debug_on_start) { |
- CommandLine command_line = |
- MultiProcessTest::MakeCmdLine(procname, debug_on_start); |
- |
- // Force seccomp off for this test. It's just a problem of refactoring, |
- // not a bug. |
- // http://code.google.com/p/chromium/issues/detail?id=59376 |
- command_line.AppendSwitch(switches::kDisableSeccompSandbox); |
- |
- return command_line; |
-} |
- |
-// Listener class that kills the message loop when it connects. |
-class SuicidalListener : public IPC::Channel::Listener { |
- public: |
- void OnChannelConnected(int32 peer_pid) { |
- MessageLoop::current()->Quit(); |
- } |
- |
- bool OnMessageReceived(const IPC::Message& message) { |
- // We shouldn't receive any messages |
- NOTREACHED(); |
- return false; |
- } |
-}; |
- |
-MULTIPROCESS_TEST_MAIN(SimpleRenderer) { |
- SandboxInitWrapper dummy_sandbox_init; |
- CommandLine cl(*CommandLine::ForCurrentProcess()); |
- cl.AppendSwitchASCII(switches::kProcessChannelID, kRendererTestChannelName); |
- |
- MainFunctionParams dummy_params(cl, dummy_sandbox_init, NULL); |
- return RendererMain(dummy_params); |
-} |
- |
-TEST_F(RendererMainTest, CreateDestroy) { |
- SuicidalListener listener; |
- IPC::Channel control_channel(kRendererTestChannelName, |
- IPC::Channel::MODE_SERVER, |
- &listener); |
- base::ProcessHandle renderer_pid = SpawnChild("SimpleRenderer", |
- &control_channel); |
- |
- ASSERT_TRUE(control_channel.Connect()); |
- |
- MessageLoop::current()->Run(); |
- |
- // The renderer should exit when we close the channel. |
- control_channel.Close(); |
- |
- EXPECT_TRUE(base::WaitForSingleProcess(renderer_pid, |
- TestTimeouts::action_timeout_ms())); |
-} |
-#endif // defined(OS_POSIX) |