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

Side by Side Diff: content/public/test/mock_render_thread.cc

Issue 2821473002: Service CreateNewWindow on the UI thread with a new mojo interface (Closed)
Patch Set: associated with IPC channel 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/public/test/mock_render_thread.h" 5 #include "content/public/test/mock_render_thread.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
9 #include "base/single_thread_task_runner.h" 9 #include "base/single_thread_task_runner.h"
10 #include "base/threading/thread_task_runner_handle.h" 10 #include "base/threading/thread_task_runner_handle.h"
(...skipping 11 matching lines...) Expand all
22 #include "services/service_manager/public/cpp/interface_provider.h" 22 #include "services/service_manager/public/cpp/interface_provider.h"
23 #include "services/service_manager/public/cpp/interface_registry.h" 23 #include "services/service_manager/public/cpp/interface_registry.h"
24 #include "services/service_manager/public/interfaces/interface_provider_spec.moj om.h" 24 #include "services/service_manager/public/interfaces/interface_provider_spec.moj om.h"
25 #include "testing/gtest/include/gtest/gtest.h" 25 #include "testing/gtest/include/gtest/gtest.h"
26 #include "third_party/WebKit/public/web/WebScriptController.h" 26 #include "third_party/WebKit/public/web/WebScriptController.h"
27 27
28 namespace content { 28 namespace content {
29 29
30 namespace { 30 namespace {
31 31
32 class MockRenderMessageFilterImpl : public mojom::RenderMessageFilter { 32 class MockRenderMessageFilterUIImpl : public mojom::RenderMessageFilterUI {
33 public: 33 public:
34 explicit MockRenderMessageFilterImpl(MockRenderThread* thread) 34 explicit MockRenderMessageFilterUIImpl(MockRenderThread* thread)
35 : thread_(thread) {} 35 : thread_(thread) {}
36 ~MockRenderMessageFilterImpl() override {} 36 ~MockRenderMessageFilterUIImpl() override {}
37 37
38 // mojom::RenderMessageFilter: 38 // mojom::RenderMessageFilterUI:
39 void GenerateRoutingID(const GenerateRoutingIDCallback& callback) override {
40 NOTREACHED();
41 callback.Run(MSG_ROUTING_NONE);
42 }
43
44 void CreateNewWindow(mojom::CreateNewWindowParamsPtr params, 39 void CreateNewWindow(mojom::CreateNewWindowParamsPtr params,
45 const CreateNewWindowCallback& callback) override { 40 const CreateNewWindowCallback& callback) override {
46 // NOTE: This implementation of mojom::RenderMessageFilter is used client- 41 // NOTE: This implementation of mojom::RenderMessageFilter is used client-
47 // side only. Because sync mojom methods have a different interface for 42 // side only. Because sync mojom methods have a different interface for
48 // bindings- and client-side, we only implement the client-side interface 43 // bindings- and client-side, we only implement the client-side interface
49 // on this object. 44 // on this object.
50 NOTREACHED(); 45 NOTREACHED();
51 } 46 }
52 47
53 bool CreateNewWindow(mojom::CreateNewWindowParamsPtr params, 48 bool CreateNewWindow(mojom::CreateNewWindowParamsPtr params,
54 mojom::CreateNewWindowReplyPtr* reply) override { 49 mojom::CreateNewWindowReplyPtr* reply) override {
55 *reply = mojom::CreateNewWindowReply::New(); 50 *reply = mojom::CreateNewWindowReply::New();
56 thread_->OnCreateWindow(*params, reply->get()); 51 thread_->OnCreateWindow(*params, reply->get());
57 return true; 52 return true;
58 } 53 }
59 54
55 private:
56 MockRenderThread* const thread_;
57 };
58
59 class MockRenderMessageFilterImpl : public mojom::RenderMessageFilter {
60 public:
61 explicit MockRenderMessageFilterImpl(MockRenderThread* thread)
62 : thread_(thread) {}
63 ~MockRenderMessageFilterImpl() override {}
64
65 // mojom::RenderMessageFilter:
66 void GenerateRoutingID(const GenerateRoutingIDCallback& callback) override {
67 NOTREACHED();
68 callback.Run(MSG_ROUTING_NONE);
69 }
70
60 void CreateNewWidget(int32_t opener_id, 71 void CreateNewWidget(int32_t opener_id,
61 blink::WebPopupType popup_type, 72 blink::WebPopupType popup_type,
62 const CreateNewWidgetCallback& callback) override { 73 const CreateNewWidgetCallback& callback) override {
63 // See comment in CreateNewWindow(). 74 // See comment in CreateNewWindow().
64 NOTREACHED(); 75 NOTREACHED();
65 } 76 }
66 77
67 bool CreateNewWidget(int32_t opener_id, 78 bool CreateNewWidget(int32_t opener_id,
68 blink::WebPopupType popup_type, 79 blink::WebPopupType popup_type,
69 int32_t* route_id) override { 80 int32_t* route_id) override {
(...skipping 18 matching lines...) Expand all
88 99
89 } // namespace 100 } // namespace
90 101
91 MockRenderThread::MockRenderThread() 102 MockRenderThread::MockRenderThread()
92 : routing_id_(0), 103 : routing_id_(0),
93 opener_id_(0), 104 opener_id_(0),
94 new_window_routing_id_(0), 105 new_window_routing_id_(0),
95 new_window_main_frame_routing_id_(0), 106 new_window_main_frame_routing_id_(0),
96 new_window_main_frame_widget_routing_id_(0), 107 new_window_main_frame_widget_routing_id_(0),
97 new_frame_routing_id_(0), 108 new_frame_routing_id_(0),
98 mock_render_message_filter_(new MockRenderMessageFilterImpl(this)) { 109 mock_render_message_filter_(new MockRenderMessageFilterImpl(this)),
110 mock_render_message_filter_ui_(new MockRenderMessageFilterUIImpl(this)) {
99 RenderThreadImpl::SetRenderMessageFilterForTesting( 111 RenderThreadImpl::SetRenderMessageFilterForTesting(
100 mock_render_message_filter_.get()); 112 mock_render_message_filter_.get());
113 RenderThreadImpl::SetRenderMessageFilterUIForTesting(
114 mock_render_message_filter_ui_.get());
101 } 115 }
102 116
103 MockRenderThread::~MockRenderThread() { 117 MockRenderThread::~MockRenderThread() {
104 while (!filters_.empty()) { 118 while (!filters_.empty()) {
105 scoped_refptr<IPC::MessageFilter> filter = filters_.back(); 119 scoped_refptr<IPC::MessageFilter> filter = filters_.back();
106 filters_.pop_back(); 120 filters_.pop_back();
107 filter->OnFilterRemoved(); 121 filter->OnFilterRemoved();
108 } 122 }
109 } 123 }
110 124
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 void MockRenderThread::OnCreateWindow( 355 void MockRenderThread::OnCreateWindow(
342 const mojom::CreateNewWindowParams& params, 356 const mojom::CreateNewWindowParams& params,
343 mojom::CreateNewWindowReply* reply) { 357 mojom::CreateNewWindowReply* reply) {
344 reply->route_id = new_window_routing_id_; 358 reply->route_id = new_window_routing_id_;
345 reply->main_frame_route_id = new_window_main_frame_routing_id_; 359 reply->main_frame_route_id = new_window_main_frame_routing_id_;
346 reply->main_frame_widget_route_id = new_window_main_frame_widget_routing_id_; 360 reply->main_frame_widget_route_id = new_window_main_frame_widget_routing_id_;
347 reply->cloned_session_storage_namespace_id = 0; 361 reply->cloned_session_storage_namespace_id = 0;
348 } 362 }
349 363
350 } // namespace content 364 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698