Index: chrome/browser/printing/cloud_print/test/cloud_print_proxy_process_browsertest.cc |
diff --git a/chrome/browser/printing/cloud_print/test/cloud_print_proxy_process_browsertest.cc b/chrome/browser/printing/cloud_print/test/cloud_print_proxy_process_browsertest.cc |
index 62037c97de91dba6b95094890abf000fc28d9d45..9ab8f020263e750dd4ba147ef73bf68f259b2183 100644 |
--- a/chrome/browser/printing/cloud_print/test/cloud_print_proxy_process_browsertest.cc |
+++ b/chrome/browser/printing/cloud_print/test/cloud_print_proxy_process_browsertest.cc |
@@ -49,10 +49,14 @@ |
#include "content/public/common/content_paths.h" |
#include "content/public/test/test_browser_thread_bundle.h" |
#include "content/public/test/test_utils.h" |
+#include "ipc/ipc_channel_mojo.h" |
#include "ipc/ipc_descriptors.h" |
#include "ipc/ipc_multiprocess_test.h" |
#include "ipc/ipc_switches.h" |
#include "mojo/edk/embedder/embedder.h" |
+#include "mojo/edk/embedder/named_platform_handle.h" |
+#include "mojo/edk/embedder/named_platform_handle_utils.h" |
+#include "mojo/edk/embedder/scoped_ipc_support.h" |
#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
#include "testing/multiprocess_func_list.h" |
@@ -101,6 +105,18 @@ class TestStartupClientChannelListener : public IPC::Listener { |
bool OnMessageReceived(const IPC::Message& message) override { return false; } |
}; |
+void ConnectOnBlockingPool(mojo::ScopedMessagePipeHandle handle, |
+ mojo::edk::NamedPlatformHandle os_pipe) { |
+ mojo::edk::ScopedPlatformHandle os_pipe_handle = |
+ mojo::edk::CreateClientHandle(os_pipe); |
+ if (!os_pipe_handle.is_valid()) |
+ return; |
+ |
+ mojo::FuseMessagePipes( |
+ mojo::edk::ConnectToPeerProcess(std::move(os_pipe_handle)), |
+ std::move(handle)); |
+} |
+ |
} // namespace |
class TestServiceProcess : public ServiceProcess { |
@@ -132,10 +148,9 @@ class MockServiceIPCServer : public ServiceIPCServer { |
MockServiceIPCServer( |
ServiceIPCServer::Client* client, |
const scoped_refptr<base::SingleThreadTaskRunner>& io_task_runner, |
- const IPC::ChannelHandle& handle, |
base::WaitableEvent* shutdown_event) |
- : ServiceIPCServer(client, io_task_runner, handle, shutdown_event), |
- enabled_(true) { } |
+ : ServiceIPCServer(client, io_task_runner, shutdown_event), |
+ enabled_(true) {} |
MOCK_METHOD1(OnMessageReceived, bool(const IPC::Message& message)); |
MOCK_METHOD1(OnChannelConnected, void(int32_t peer_pid)); |
@@ -253,10 +268,10 @@ int CloudPrintMockService_Main(SetExpectationsCallback set_expectations) { |
// Needed for IPC. |
mojo::edk::Init(); |
+ mojo::edk::ScopedIPCSupport ipc_support(service_process.io_task_runner()); |
MockServiceIPCServer server(&service_process, |
service_process.io_task_runner(), |
- state->GetServiceProcessChannel(), |
service_process.GetShutdownEventForTesting()); |
// Here is where the expectations/mock responses need to be set up. |
@@ -475,11 +490,16 @@ void CloudPrintProxyPolicyStartupTest::WaitForConnect() { |
observer_.Wait(); |
EXPECT_TRUE(CheckServiceProcessReady()); |
EXPECT_TRUE(base::ThreadTaskRunnerHandle::Get().get()); |
+ |
+ mojo::MessagePipe pipe; |
+ BrowserThread::PostBlockingPoolTask( |
+ FROM_HERE, base::Bind(&ConnectOnBlockingPool, base::Passed(&pipe.handle1), |
+ mojo::edk::NamedPlatformHandle( |
+ GetServiceProcessChannel().name))); |
ServiceProcessControl::GetInstance()->SetChannel( |
- IPC::ChannelProxy::Create(GetServiceProcessChannel(), |
- IPC::Channel::MODE_NAMED_CLIENT, |
- ServiceProcessControl::GetInstance(), |
- IOTaskRunner())); |
+ IPC::ChannelProxy::Create(IPC::ChannelMojo::CreateClientFactory( |
+ std::move(pipe.handle0), IOTaskRunner()), |
+ this, IOTaskRunner())); |
} |
bool CloudPrintProxyPolicyStartupTest::Send(IPC::Message* message) { |
@@ -512,6 +532,11 @@ base::CommandLine CloudPrintProxyPolicyStartupTest::MakeCmdLine( |
} |
TEST_F(CloudPrintProxyPolicyStartupTest, StartAndShutdown) { |
+ mojo::edk::Init(); |
+ mojo::edk::ScopedIPCSupport ipc_support( |
+ BrowserThread::UnsafeGetMessageLoopForThread(BrowserThread::IO) |
+ ->task_runner()); |
+ |
TestingBrowserProcess* browser_process = |
TestingBrowserProcess::GetGlobal(); |
TestingProfileManager profile_manager(browser_process); |
@@ -526,5 +551,6 @@ TEST_F(CloudPrintProxyPolicyStartupTest, StartAndShutdown) { |
Launch("CloudPrintMockService_StartEnabledWaitForQuit"); |
WaitForConnect(); |
ShutdownAndWaitForExitWithTimeout(std::move(process)); |
+ ServiceProcessControl::GetInstance()->Disconnect(); |
content::RunAllPendingInMessageLoop(); |
} |