Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2157)

Unified Diff: content/test/test_render_frame.cc

Issue 2821473002: Service CreateNewWindow on the UI thread with a new mojo interface (Closed)
Patch Set: security exploit test passes a non null callback Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..812b48780741e1f074bccceb3e6863013d83d9d7 100644
--- a/content/test/test_render_frame.cc
+++ b/content/test/test_render_frame.cc
@@ -4,14 +4,42 @@
#include "content/test/test_render_frame.h"
+#include "base/memory/ptr_util.h"
#include "content/common/navigation_params.h"
#include "content/common/resource_request_body_impl.h"
+#include "content/public/common/associated_interface_provider.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() : binding_(this) {}
+ ~MockFrameHostIPC() override = default;
+
+ void CreateNewWindow(mojom::CreateNewWindowParamsPtr params,
+ const CreateNewWindowCallback& callback) override {
+ mojom::CreateNewWindowReplyPtr reply = mojom::CreateNewWindowReply::New();
+ MockRenderThread* mock_render_thread =
+ static_cast<MockRenderThread*>(RenderThread::Get());
+ mock_render_thread->OnCreateWindow(*params, reply.get());
+ callback.Run(std::move(reply));
+ }
+
+ void Bind(mojo::ScopedInterfaceEndpointHandle handle) {
+ binding_.Bind(
+ mojo::MakeAssociatedRequest<mojom::FrameHostIPC>(std::move(handle)));
+ }
+
+ private:
+ mojo::AssociatedBinding<mojom::FrameHostIPC> binding_;
+
+ DISALLOW_COPY_AND_ASSIGN(MockFrameHostIPC);
+};
+
// static
RenderFrameImpl* TestRenderFrame::CreateTestRenderFrame(
const RenderFrameImpl::CreateParams& params) {
@@ -19,7 +47,12 @@ RenderFrameImpl* TestRenderFrame::CreateTestRenderFrame(
}
TestRenderFrame::TestRenderFrame(const RenderFrameImpl::CreateParams& params)
- : RenderFrameImpl(params) {
+ : RenderFrameImpl(params),
+ mock_frame_host_ipc_(base::MakeUnique<MockFrameHostIPC>()) {
+ GetRemoteAssociatedInterfaces()->OverrideBinderForTesting(
+ mojom::FrameHostIPC::Name_,
+ base::Bind(&MockFrameHostIPC::Bind,
+ base::Unretained(mock_frame_host_ipc_.get())));
}
TestRenderFrame::~TestRenderFrame() {

Powered by Google App Engine
This is Rietveld 408576698