| Index: content/test/test_render_frame.cc | 
| diff --git a/content/test/test_render_frame.cc b/content/test/test_render_frame.cc | 
| index 6c0bb0133b81b4af5f5e4e615a24e6bb8f48f943..a74ab69d2c080c4aee7ec699be58cdea6987fecf 100644 | 
| --- a/content/test/test_render_frame.cc | 
| +++ b/content/test/test_render_frame.cc | 
| @@ -4,14 +4,47 @@ | 
|  | 
| #include "content/test/test_render_frame.h" | 
|  | 
| +#include "base/memory/ptr_util.h" | 
| +#include "content/common/frame.mojom.h" | 
| #include "content/common/navigation_params.h" | 
| #include "content/common/resource_request_body_impl.h" | 
| #include "content/public/common/browser_side_navigation_policy.h" | 
| #include "content/public/common/resource_response.h" | 
| +#include "content/public/test/mock_render_thread.h" | 
| #include "third_party/WebKit/public/web/WebLocalFrame.h" | 
|  | 
| namespace content { | 
|  | 
| +class MockFrameHostIPC : public mojom::FrameHostIPC { | 
| + public: | 
| +  MockFrameHostIPC() = default; | 
| +  ~MockFrameHostIPC() override = default; | 
| + | 
| +  void CreateNewWindow(mojom::CreateNewWindowParamsPtr params, | 
| +                       const CreateNewWindowCallback& callback) override { | 
| +    // NOTE: This implementation of mojom::FrameHostIPC is used client- | 
| +    // side only. Because sync mojom methods have a different interface for | 
| +    // bindings- and client-side, we only implement the client-side interface | 
| +    // on this object. | 
| +    NOTREACHED(); | 
| +  } | 
| + | 
| +  bool CreateNewWindow(mojom::CreateNewWindowParamsPtr params, | 
| +                       mojom::CreateNewWindowReplyPtr* reply) override { | 
| +    *reply = mojom::CreateNewWindowReply::New(); | 
| + | 
| +    // It is not very nice to reach directly into the MockRenderThread here. The | 
| +    // logic to create mock frames/windows should potentially live here. | 
| +    MockRenderThread* mock_render_thread = | 
| +        static_cast<MockRenderThread*>(RenderThread::Get()); | 
| +    mock_render_thread->OnCreateWindow(*params, reply->get()); | 
| +    return true; | 
| +  } | 
| + | 
| + private: | 
| +  DISALLOW_COPY_AND_ASSIGN(MockFrameHostIPC); | 
| +}; | 
| + | 
| // static | 
| RenderFrameImpl* TestRenderFrame::CreateTestRenderFrame( | 
| const RenderFrameImpl::CreateParams& params) { | 
| @@ -20,6 +53,7 @@ RenderFrameImpl* TestRenderFrame::CreateTestRenderFrame( | 
|  | 
| TestRenderFrame::TestRenderFrame(const RenderFrameImpl::CreateParams& params) | 
| : RenderFrameImpl(params) { | 
| +  mock_frame_host_ipc_ = base::MakeUnique<MockFrameHostIPC>(); | 
| } | 
|  | 
| TestRenderFrame::~TestRenderFrame() { | 
| @@ -89,4 +123,8 @@ blink::WebNavigationPolicy TestRenderFrame::DecidePolicyForNavigation( | 
| return RenderFrameImpl::DecidePolicyForNavigation(info); | 
| } | 
|  | 
| +mojom::FrameHostIPC* TestRenderFrame::GetFrameHostIPC() { | 
| +  return mock_frame_host_ipc_.get(); | 
| +} | 
| + | 
| }  // namespace content | 
|  |