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

Side by Side Diff: sky/viewer/document_view.cc

Issue 741453002: Make sure that Content Handled application can be connected multiple times. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Follow review Created 6 years, 1 month 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "sky/viewer/document_view.h" 5 #include "sky/viewer/document_view.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/location.h" 8 #include "base/location.h"
9 #include "base/message_loop/message_loop_proxy.h" 9 #include "base/message_loop/message_loop_proxy.h"
10 #include "base/single_thread_task_runner.h" 10 #include "base/single_thread_task_runner.h"
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 default: 60 default:
61 return mojo::TARGET_DEFAULT; 61 return mojo::TARGET_DEFAULT;
62 } 62 }
63 } 63 }
64 64
65 } // namespace 65 } // namespace
66 66
67 static int s_next_debugger_id = 1; 67 static int s_next_debugger_id = 1;
68 68
69 DocumentView::DocumentView( 69 DocumentView::DocumentView(
70 const base::Closure& destruction_callback,
71 mojo::ServiceProviderPtr provider,
70 mojo::URLResponsePtr response, 72 mojo::URLResponsePtr response,
71 mojo::ShellPtr shell, 73 mojo::Shell* shell,
72 scoped_refptr<base::MessageLoopProxy> compositor_thread) 74 scoped_refptr<base::MessageLoopProxy> compositor_thread)
73 : response_(response.Pass()), 75 : destruction_callback_(destruction_callback),
74 shell_(shell.Pass()), 76 response_(response.Pass()),
77 shell_(shell),
75 web_view_(NULL), 78 web_view_(NULL),
76 root_(NULL), 79 root_(NULL),
77 view_manager_client_factory_(shell_.get(), this), 80 view_manager_client_factory_(shell_, this),
78 inspector_service_factory_(this), 81 inspector_service_factory_(this),
79 compositor_thread_(compositor_thread), 82 compositor_thread_(compositor_thread),
80 debugger_id_(s_next_debugger_id++), 83 debugger_id_(s_next_debugger_id++),
81 weak_factory_(this) { 84 weak_factory_(this) {
82 shell_.set_client(this); 85 exported_services_.AddService(&view_manager_client_factory_);
86 mojo::WeakBindToPipe(&exported_services_, provider.PassMessagePipe());
83 } 87 }
84 88
85 DocumentView::~DocumentView() { 89 DocumentView::~DocumentView() {
86 if (web_view_) 90 if (web_view_)
87 web_view_->close(); 91 web_view_->close();
88 if (root_) 92 if (root_)
89 root_->RemoveObserver(this); 93 root_->RemoveObserver(this);
94 destruction_callback_.Run();
90 } 95 }
91 96
92 base::WeakPtr<DocumentView> DocumentView::GetWeakPtr() { 97 base::WeakPtr<DocumentView> DocumentView::GetWeakPtr() {
93 return weak_factory_.GetWeakPtr(); 98 return weak_factory_.GetWeakPtr();
94 } 99 }
95 100
96 void DocumentView::AcceptConnection(const mojo::String& requestor_url,
97 mojo::ServiceProviderPtr provider) {
98 exported_services_.AddService(&view_manager_client_factory_);
99 mojo::WeakBindToPipe(&exported_services_, provider.PassMessagePipe());
100 }
101
102 void DocumentView::Initialize(mojo::Array<mojo::String> args) {
103 }
104
105 void DocumentView::OnEmbed( 101 void DocumentView::OnEmbed(
106 mojo::ViewManager* view_manager, 102 mojo::ViewManager* view_manager,
107 mojo::View* root, 103 mojo::View* root,
108 mojo::ServiceProviderImpl* exported_services, 104 mojo::ServiceProviderImpl* exported_services,
109 scoped_ptr<mojo::ServiceProvider> imported_services) { 105 scoped_ptr<mojo::ServiceProvider> imported_services) {
110 106
111 root_ = root; 107 root_ = root;
112 imported_services_ = imported_services.Pass(); 108 imported_services_ = imported_services.Pass();
113 navigator_host_.set_service_provider(imported_services_.get()); 109 navigator_host_.set_service_provider(imported_services_.get());
114 exported_services->AddService(&inspector_service_factory_); 110 exported_services->AddService(&inspector_service_factory_);
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 200
205 blink::ServiceProvider& DocumentView::services() { 201 blink::ServiceProvider& DocumentView::services() {
206 return *this; 202 return *this;
207 } 203 }
208 204
209 mojo::NavigatorHost* DocumentView::NavigatorHost() { 205 mojo::NavigatorHost* DocumentView::NavigatorHost() {
210 return navigator_host_.get(); 206 return navigator_host_.get();
211 } 207 }
212 208
213 mojo::Shell* DocumentView::Shell() { 209 mojo::Shell* DocumentView::Shell() {
214 return shell_.get(); 210 return shell_;
215 } 211 }
216 212
217 void DocumentView::OnViewBoundsChanged(mojo::View* view, 213 void DocumentView::OnViewBoundsChanged(mojo::View* view,
218 const mojo::Rect& old_bounds, 214 const mojo::Rect& old_bounds,
219 const mojo::Rect& new_bounds) { 215 const mojo::Rect& new_bounds) {
220 DCHECK_EQ(view, root_); 216 DCHECK_EQ(view, root_);
221 gfx::Size size = new_bounds.To<gfx::Rect>().size(); 217 gfx::Size size = new_bounds.To<gfx::Rect>().size();
222 web_view_->resize(size); 218 web_view_->resize(size);
223 web_layer_tree_view_impl_->setViewportSize(size); 219 web_layer_tree_view_impl_->setViewportSize(size);
224 } 220 }
(...skipping 15 matching lines...) Expand all
240 236
241 void DocumentView::OnViewInputEvent( 237 void DocumentView::OnViewInputEvent(
242 mojo::View* view, const mojo::EventPtr& event) { 238 mojo::View* view, const mojo::EventPtr& event) {
243 scoped_ptr<blink::WebInputEvent> web_event = 239 scoped_ptr<blink::WebInputEvent> web_event =
244 event.To<scoped_ptr<blink::WebInputEvent> >(); 240 event.To<scoped_ptr<blink::WebInputEvent> >();
245 if (web_event) 241 if (web_event)
246 web_view_->handleInputEvent(*web_event); 242 web_view_->handleInputEvent(*web_event);
247 } 243 }
248 244
249 } // namespace sky 245 } // namespace sky
OLDNEW
« mojo/application_manager/background_shell_application_loader.cc ('K') | « sky/viewer/document_view.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698