OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "components/html_viewer/html_widget.h" | 5 #include "components/html_viewer/html_widget.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
11 #include "components/html_viewer/blink_settings.h" | 11 #include "components/html_viewer/blink_settings.h" |
12 #include "components/html_viewer/global_state.h" | 12 #include "components/html_viewer/global_state.h" |
13 #include "components/html_viewer/ime_controller.h" | 13 #include "components/html_viewer/ime_controller.h" |
14 #include "components/html_viewer/stats_collection_controller.h" | 14 #include "components/html_viewer/stats_collection_controller.h" |
15 #include "components/html_viewer/web_layer_tree_view_impl.h" | 15 #include "components/html_viewer/web_layer_tree_view_impl.h" |
16 #include "components/html_viewer/web_storage_namespace_impl.h" | 16 #include "components/html_viewer/web_storage_namespace_impl.h" |
17 #include "components/mus/public/cpp/window.h" | 17 #include "components/mus/public/cpp/window.h" |
18 #include "mojo/services/tracing/public/interfaces/tracing.mojom.h" | 18 #include "mojo/services/tracing/public/interfaces/tracing.mojom.h" |
19 #include "mojo/shell/public/cpp/application_impl.h" | 19 #include "mojo/shell/public/cpp/shell.h" |
20 #include "third_party/WebKit/public/web/WebFrameWidget.h" | 20 #include "third_party/WebKit/public/web/WebFrameWidget.h" |
21 #include "third_party/WebKit/public/web/WebSettings.h" | 21 #include "third_party/WebKit/public/web/WebSettings.h" |
22 #include "third_party/WebKit/public/web/WebView.h" | 22 #include "third_party/WebKit/public/web/WebView.h" |
23 #include "ui/gfx/geometry/dip_util.h" | 23 #include "ui/gfx/geometry/dip_util.h" |
24 | 24 |
25 namespace html_viewer { | 25 namespace html_viewer { |
26 namespace { | 26 namespace { |
27 | 27 |
28 scoped_ptr<WebLayerTreeViewImpl> CreateWebLayerTreeView( | 28 scoped_ptr<WebLayerTreeViewImpl> CreateWebLayerTreeView( |
29 GlobalState* global_state) { | 29 GlobalState* global_state) { |
30 return make_scoped_ptr(new WebLayerTreeViewImpl( | 30 return make_scoped_ptr(new WebLayerTreeViewImpl( |
31 global_state->compositor_thread(), | 31 global_state->compositor_thread(), |
32 global_state->gpu_memory_buffer_manager(), | 32 global_state->gpu_memory_buffer_manager(), |
33 global_state->raster_thread_helper()->task_graph_runner())); | 33 global_state->raster_thread_helper()->task_graph_runner())); |
34 } | 34 } |
35 | 35 |
36 void InitializeWebLayerTreeView(WebLayerTreeViewImpl* web_layer_tree_view, | 36 void InitializeWebLayerTreeView(WebLayerTreeViewImpl* web_layer_tree_view, |
37 mojo::ApplicationImpl* app, | 37 mojo::Shell* shell, |
38 mus::Window* window, | 38 mus::Window* window, |
39 blink::WebWidget* widget) { | 39 blink::WebWidget* widget) { |
40 DCHECK(window); | 40 DCHECK(window); |
41 mus::mojom::GpuPtr gpu_service; | 41 mus::mojom::GpuPtr gpu_service; |
42 app->ConnectToService("mojo:mus", &gpu_service); | 42 shell->ConnectToService("mojo:mus", &gpu_service); |
43 web_layer_tree_view->Initialize(std::move(gpu_service), window, widget); | 43 web_layer_tree_view->Initialize(std::move(gpu_service), window, widget); |
44 } | 44 } |
45 | 45 |
46 void UpdateWebViewSizeFromViewSize(mus::Window* window, | 46 void UpdateWebViewSizeFromViewSize(mus::Window* window, |
47 blink::WebWidget* web_widget, | 47 blink::WebWidget* web_widget, |
48 WebLayerTreeViewImpl* web_layer_tree_view) { | 48 WebLayerTreeViewImpl* web_layer_tree_view) { |
49 const gfx::Size size_in_pixels(window->bounds().size()); | 49 const gfx::Size size_in_pixels(window->bounds().size()); |
50 const gfx::Size size_in_dips = gfx::ConvertSizeToDIP( | 50 const gfx::Size size_in_dips = gfx::ConvertSizeToDIP( |
51 window->viewport_metrics().device_pixel_ratio, size_in_pixels); | 51 window->viewport_metrics().device_pixel_ratio, size_in_pixels); |
52 web_widget->resize( | 52 web_widget->resize( |
(...skipping 22 matching lines...) Expand all Loading... |
75 } | 75 } |
76 | 76 |
77 blink::WebWidget* HTMLWidgetRootRemote::GetWidget() { | 77 blink::WebWidget* HTMLWidgetRootRemote::GetWidget() { |
78 return web_view_; | 78 return web_view_; |
79 } | 79 } |
80 | 80 |
81 void HTMLWidgetRootRemote::OnWindowBoundsChanged(mus::Window* window) {} | 81 void HTMLWidgetRootRemote::OnWindowBoundsChanged(mus::Window* window) {} |
82 | 82 |
83 // HTMLWidgetRootLocal -------------------------------------------------------- | 83 // HTMLWidgetRootLocal -------------------------------------------------------- |
84 | 84 |
85 HTMLWidgetRootLocal::CreateParams::CreateParams(mojo::ApplicationImpl* app, | 85 HTMLWidgetRootLocal::CreateParams::CreateParams(mojo::Shell* shell, |
86 GlobalState* global_state, | 86 GlobalState* global_state, |
87 mus::Window* window) | 87 mus::Window* window) |
88 : app(app), global_state(global_state), window(window) {} | 88 : shell(shell), global_state(global_state), window(window) {} |
89 | 89 |
90 HTMLWidgetRootLocal::CreateParams::~CreateParams() {} | 90 HTMLWidgetRootLocal::CreateParams::~CreateParams() {} |
91 | 91 |
92 HTMLWidgetRootLocal::HTMLWidgetRootLocal(CreateParams* create_params) | 92 HTMLWidgetRootLocal::HTMLWidgetRootLocal(CreateParams* create_params) |
93 : app_(create_params->app), | 93 : shell_(create_params->shell), |
94 global_state_(create_params->global_state), | 94 global_state_(create_params->global_state), |
95 window_(create_params->window), | 95 window_(create_params->window), |
96 web_view_(nullptr) { | 96 web_view_(nullptr) { |
97 web_view_ = blink::WebView::create(this); | 97 web_view_ = blink::WebView::create(this); |
98 ime_controller_.reset(new ImeController(window_, web_view_)); | 98 ime_controller_.reset(new ImeController(window_, web_view_)); |
99 // Creating the widget calls initializeLayerTreeView() to create the | 99 // Creating the widget calls initializeLayerTreeView() to create the |
100 // |web_layer_tree_view_impl_|. As we haven't yet assigned the |web_view_| | 100 // |web_layer_tree_view_impl_|. As we haven't yet assigned the |web_view_| |
101 // we have to set it here. | 101 // we have to set it here. |
102 if (web_layer_tree_view_impl_) { | 102 if (web_layer_tree_view_impl_) { |
103 InitializeWebLayerTreeView(web_layer_tree_view_impl_.get(), app_, window_, | 103 InitializeWebLayerTreeView(web_layer_tree_view_impl_.get(), shell_, window_, |
104 web_view_); | 104 web_view_); |
105 UpdateWebViewSizeFromViewSize(window_, web_view_, | 105 UpdateWebViewSizeFromViewSize(window_, web_view_, |
106 web_layer_tree_view_impl_.get()); | 106 web_layer_tree_view_impl_.get()); |
107 } | 107 } |
108 global_state_->blink_settings()->ApplySettingsToWebView(web_view_); | 108 global_state_->blink_settings()->ApplySettingsToWebView(web_view_); |
109 } | 109 } |
110 | 110 |
111 HTMLWidgetRootLocal::~HTMLWidgetRootLocal() {} | 111 HTMLWidgetRootLocal::~HTMLWidgetRootLocal() {} |
112 | 112 |
113 blink::WebStorageNamespace* | 113 blink::WebStorageNamespace* |
114 HTMLWidgetRootLocal::createSessionStorageNamespace() { | 114 HTMLWidgetRootLocal::createSessionStorageNamespace() { |
115 return new WebStorageNamespaceImpl(); | 115 return new WebStorageNamespaceImpl(); |
116 } | 116 } |
117 | 117 |
118 void HTMLWidgetRootLocal::initializeLayerTreeView() { | 118 void HTMLWidgetRootLocal::initializeLayerTreeView() { |
119 web_layer_tree_view_impl_ = CreateWebLayerTreeView(global_state_); | 119 web_layer_tree_view_impl_ = CreateWebLayerTreeView(global_state_); |
120 } | 120 } |
121 | 121 |
122 blink::WebLayerTreeView* HTMLWidgetRootLocal::layerTreeView() { | 122 blink::WebLayerTreeView* HTMLWidgetRootLocal::layerTreeView() { |
123 return web_layer_tree_view_impl_.get(); | 123 return web_layer_tree_view_impl_.get(); |
124 } | 124 } |
125 | 125 |
126 void HTMLWidgetRootLocal::didMeaningfulLayout( | 126 void HTMLWidgetRootLocal::didMeaningfulLayout( |
127 blink::WebMeaningfulLayout layout_type) { | 127 blink::WebMeaningfulLayout layout_type) { |
128 static bool called = false; | 128 static bool called = false; |
129 if (!called && layout_type == blink::WebMeaningfulLayout::VisuallyNonEmpty) { | 129 if (!called && layout_type == blink::WebMeaningfulLayout::VisuallyNonEmpty) { |
130 const int64_t ticks = base::TimeTicks::Now().ToInternalValue(); | 130 const int64_t ticks = base::TimeTicks::Now().ToInternalValue(); |
131 tracing::StartupPerformanceDataCollectorPtr collector = | 131 tracing::StartupPerformanceDataCollectorPtr collector = |
132 StatsCollectionController::ConnectToDataCollector(app_); | 132 StatsCollectionController::ConnectToDataCollector(shell_); |
133 if (collector) | 133 if (collector) |
134 collector->SetFirstVisuallyNonEmptyLayoutTicks(ticks); | 134 collector->SetFirstVisuallyNonEmptyLayoutTicks(ticks); |
135 called = true; | 135 called = true; |
136 } | 136 } |
137 } | 137 } |
138 | 138 |
139 void HTMLWidgetRootLocal::resetInputMethod() { | 139 void HTMLWidgetRootLocal::resetInputMethod() { |
140 ime_controller_->ResetInputMethod(); | 140 ime_controller_->ResetInputMethod(); |
141 } | 141 } |
142 | 142 |
(...skipping 15 matching lines...) Expand all Loading... |
158 return web_view_; | 158 return web_view_; |
159 } | 159 } |
160 | 160 |
161 void HTMLWidgetRootLocal::OnWindowBoundsChanged(mus::Window* window) { | 161 void HTMLWidgetRootLocal::OnWindowBoundsChanged(mus::Window* window) { |
162 UpdateWebViewSizeFromViewSize(window, web_view_, | 162 UpdateWebViewSizeFromViewSize(window, web_view_, |
163 web_layer_tree_view_impl_.get()); | 163 web_layer_tree_view_impl_.get()); |
164 } | 164 } |
165 | 165 |
166 // HTMLWidgetLocalRoot -------------------------------------------------------- | 166 // HTMLWidgetLocalRoot -------------------------------------------------------- |
167 | 167 |
168 HTMLWidgetLocalRoot::HTMLWidgetLocalRoot(mojo::ApplicationImpl* app, | 168 HTMLWidgetLocalRoot::HTMLWidgetLocalRoot(mojo::Shell* shell, |
169 GlobalState* global_state, | 169 GlobalState* global_state, |
170 mus::Window* window, | 170 mus::Window* window, |
171 blink::WebLocalFrame* web_local_frame) | 171 blink::WebLocalFrame* web_local_frame) |
172 : app_(app), global_state_(global_state), web_frame_widget_(nullptr) { | 172 : shell_(shell), global_state_(global_state), web_frame_widget_(nullptr) { |
173 web_frame_widget_ = blink::WebFrameWidget::create(this, web_local_frame); | 173 web_frame_widget_ = blink::WebFrameWidget::create(this, web_local_frame); |
174 ime_controller_.reset(new ImeController(window, web_frame_widget_)); | 174 ime_controller_.reset(new ImeController(window, web_frame_widget_)); |
175 // Creating the widget calls initializeLayerTreeView() to create the | 175 // Creating the widget calls initializeLayerTreeView() to create the |
176 // |web_layer_tree_view_impl_|. As we haven't yet assigned the | 176 // |web_layer_tree_view_impl_|. As we haven't yet assigned the |
177 // |web_frame_widget_| | 177 // |web_frame_widget_| |
178 // we have to set it here. | 178 // we have to set it here. |
179 if (web_layer_tree_view_impl_) { | 179 if (web_layer_tree_view_impl_) { |
180 InitializeWebLayerTreeView(web_layer_tree_view_impl_.get(), app_, window, | 180 InitializeWebLayerTreeView(web_layer_tree_view_impl_.get(), shell_, window, |
181 web_frame_widget_); | 181 web_frame_widget_); |
182 UpdateWebViewSizeFromViewSize(window, web_frame_widget_, | 182 UpdateWebViewSizeFromViewSize(window, web_frame_widget_, |
183 web_layer_tree_view_impl_.get()); | 183 web_layer_tree_view_impl_.get()); |
184 } | 184 } |
185 } | 185 } |
186 | 186 |
187 HTMLWidgetLocalRoot::~HTMLWidgetLocalRoot() {} | 187 HTMLWidgetLocalRoot::~HTMLWidgetLocalRoot() {} |
188 | 188 |
189 blink::WebWidget* HTMLWidgetLocalRoot::GetWidget() { | 189 blink::WebWidget* HTMLWidgetLocalRoot::GetWidget() { |
190 return web_frame_widget_; | 190 return web_frame_widget_; |
(...skipping 24 matching lines...) Expand all Loading... |
215 | 215 |
216 void HTMLWidgetLocalRoot::didUpdateTextOfFocusedElementByNonUserInput() { | 216 void HTMLWidgetLocalRoot::didUpdateTextOfFocusedElementByNonUserInput() { |
217 ime_controller_->DidUpdateTextOfFocusedElementByNonUserInput(); | 217 ime_controller_->DidUpdateTextOfFocusedElementByNonUserInput(); |
218 } | 218 } |
219 | 219 |
220 void HTMLWidgetLocalRoot::showImeIfNeeded() { | 220 void HTMLWidgetLocalRoot::showImeIfNeeded() { |
221 ime_controller_->ShowImeIfNeeded(); | 221 ime_controller_->ShowImeIfNeeded(); |
222 } | 222 } |
223 | 223 |
224 } // namespace html_viewer | 224 } // namespace html_viewer |
OLD | NEW |