OLD | NEW |
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" |
11 #include "base/strings/string_util.h" | 11 #include "base/strings/string_util.h" |
12 #include "base/thread_task_runner_handle.h" | 12 #include "base/thread_task_runner_handle.h" |
13 #include "mojo/converters/geometry/geometry_type_converters.h" | 13 #include "mojo/converters/geometry/geometry_type_converters.h" |
14 #include "mojo/public/cpp/application/connect.h" | 14 #include "mojo/public/cpp/application/connect.h" |
15 #include "mojo/public/cpp/application/service_provider_impl.h" | |
16 #include "mojo/public/cpp/system/data_pipe.h" | 15 #include "mojo/public/cpp/system/data_pipe.h" |
17 #include "mojo/public/interfaces/application/shell.mojom.h" | 16 #include "mojo/public/interfaces/application/shell.mojom.h" |
18 #include "mojo/services/public/cpp/view_manager/view.h" | 17 #include "mojo/services/public/cpp/view_manager/view.h" |
19 #include "mojo/services/public/interfaces/surfaces/surfaces_service.mojom.h" | 18 #include "mojo/services/public/interfaces/surfaces/surfaces_service.mojom.h" |
20 #include "skia/ext/refptr.h" | 19 #include "skia/ext/refptr.h" |
21 #include "sky/engine/public/platform/Platform.h" | 20 #include "sky/engine/public/platform/Platform.h" |
22 #include "sky/engine/public/platform/WebHTTPHeaderVisitor.h" | 21 #include "sky/engine/public/platform/WebHTTPHeaderVisitor.h" |
23 #include "sky/engine/public/web/WebConsoleMessage.h" | 22 #include "sky/engine/public/web/WebConsoleMessage.h" |
24 #include "sky/engine/public/web/WebDocument.h" | 23 #include "sky/engine/public/web/WebDocument.h" |
25 #include "sky/engine/public/web/WebElement.h" | 24 #include "sky/engine/public/web/WebElement.h" |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 return mojo::TARGET_NEW_NODE; | 59 return mojo::TARGET_NEW_NODE; |
61 default: | 60 default: |
62 return mojo::TARGET_DEFAULT; | 61 return mojo::TARGET_DEFAULT; |
63 } | 62 } |
64 } | 63 } |
65 | 64 |
66 } // namespace | 65 } // namespace |
67 | 66 |
68 DocumentView::DocumentView( | 67 DocumentView::DocumentView( |
69 mojo::URLResponsePtr response, | 68 mojo::URLResponsePtr response, |
70 mojo::InterfaceRequest<mojo::ServiceProvider> service_provider_request, | 69 mojo::ShellPtr shell, |
71 mojo::Shell* shell, | |
72 scoped_refptr<base::MessageLoopProxy> compositor_thread) | 70 scoped_refptr<base::MessageLoopProxy> compositor_thread) |
73 : response_(response.Pass()), | 71 : response_(response.Pass()), |
74 shell_(shell), | 72 shell_(shell.Pass()), |
75 web_view_(NULL), | 73 web_view_(NULL), |
76 root_(NULL), | 74 root_(NULL), |
77 view_manager_client_factory_(shell, this), | 75 view_manager_client_factory_(shell_.get(), this), |
78 inspector_service_factory_(this), | 76 inspector_service_factory_(this), |
79 compositor_thread_(compositor_thread), | 77 compositor_thread_(compositor_thread), |
80 weak_factory_(this) { | 78 weak_factory_(this) { |
81 mojo::ServiceProviderImpl* exported_services = new mojo::ServiceProviderImpl()
; | 79 shell_.set_client(this); |
82 exported_services->AddService(&view_manager_client_factory_); | |
83 BindToRequest(exported_services, &service_provider_request); | |
84 } | 80 } |
85 | 81 |
86 DocumentView::~DocumentView() { | 82 DocumentView::~DocumentView() { |
87 if (web_view_) | 83 if (web_view_) |
88 web_view_->close(); | 84 web_view_->close(); |
89 if (root_) | 85 if (root_) |
90 root_->RemoveObserver(this); | 86 root_->RemoveObserver(this); |
91 } | 87 } |
92 | 88 |
93 base::WeakPtr<DocumentView> DocumentView::GetWeakPtr() { | 89 base::WeakPtr<DocumentView> DocumentView::GetWeakPtr() { |
94 return weak_factory_.GetWeakPtr(); | 90 return weak_factory_.GetWeakPtr(); |
95 } | 91 } |
96 | 92 |
| 93 void DocumentView::AcceptConnection(const mojo::String& requestor_url, |
| 94 mojo::ServiceProviderPtr provider) { |
| 95 exported_services_.AddService(&view_manager_client_factory_); |
| 96 mojo::WeakBindToPipe(&exported_services_, provider.PassMessagePipe()); |
| 97 } |
| 98 |
| 99 void DocumentView::Initialize(mojo::Array<mojo::String> args) { |
| 100 } |
| 101 |
97 void DocumentView::OnEmbed( | 102 void DocumentView::OnEmbed( |
98 mojo::ViewManager* view_manager, | 103 mojo::ViewManager* view_manager, |
99 mojo::View* root, | 104 mojo::View* root, |
100 mojo::ServiceProviderImpl* exported_services, | 105 mojo::ServiceProviderImpl* exported_services, |
101 scoped_ptr<mojo::ServiceProvider> imported_services) { | 106 scoped_ptr<mojo::ServiceProvider> imported_services) { |
102 | 107 |
103 root_ = root; | 108 root_ = root; |
104 imported_services_ = imported_services.Pass(); | 109 imported_services_ = imported_services.Pass(); |
105 navigator_host_.set_service_provider(imported_services_.get()); | 110 navigator_host_.set_service_provider(imported_services_.get()); |
106 exported_services->AddService(&inspector_service_factory_); | 111 exported_services->AddService(&inspector_service_factory_); |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 | 203 |
199 void DocumentView::OnViewInputEvent( | 204 void DocumentView::OnViewInputEvent( |
200 mojo::View* view, const mojo::EventPtr& event) { | 205 mojo::View* view, const mojo::EventPtr& event) { |
201 scoped_ptr<blink::WebInputEvent> web_event = | 206 scoped_ptr<blink::WebInputEvent> web_event = |
202 event.To<scoped_ptr<blink::WebInputEvent> >(); | 207 event.To<scoped_ptr<blink::WebInputEvent> >(); |
203 if (web_event) | 208 if (web_event) |
204 web_view_->handleInputEvent(*web_event); | 209 web_view_->handleInputEvent(*web_event); |
205 } | 210 } |
206 | 211 |
207 } // namespace sky | 212 } // namespace sky |
OLD | NEW |