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 "mojo/services/html_viewer/html_document_view.h" | 5 #include "mojo/services/html_viewer/html_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/single_thread_task_runner.h" | 9 #include "base/single_thread_task_runner.h" |
10 #include "base/thread_task_runner_handle.h" | 10 #include "base/thread_task_runner_handle.h" |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 return true; | 70 return true; |
71 | 71 |
72 // Otherwise we don't know if we're the right app to handle this request. Ask | 72 // Otherwise we don't know if we're the right app to handle this request. Ask |
73 // host to do the navigation for us. | 73 // host to do the navigation for us. |
74 return false; | 74 return false; |
75 } | 75 } |
76 | 76 |
77 } // namespace | 77 } // namespace |
78 | 78 |
79 HTMLDocumentView::HTMLDocumentView(ServiceProvider* service_provider, | 79 HTMLDocumentView::HTMLDocumentView(ServiceProvider* service_provider, |
80 view_manager::ViewManager* view_manager) | 80 ViewManager* view_manager) |
81 : view_manager_(view_manager), | 81 : view_manager_(view_manager), |
82 view_(view_manager::View::Create(view_manager_)), | 82 view_(View::Create(view_manager_)), |
83 web_view_(NULL), | 83 web_view_(NULL), |
84 root_(NULL), | 84 root_(NULL), |
85 repaint_pending_(false), | 85 repaint_pending_(false), |
86 navigator_host_(service_provider), | 86 navigator_host_(service_provider), |
87 weak_factory_(this) { | 87 weak_factory_(this) { |
88 view_->AddObserver(this); | 88 view_->AddObserver(this); |
89 } | 89 } |
90 | 90 |
91 HTMLDocumentView::~HTMLDocumentView() { | 91 HTMLDocumentView::~HTMLDocumentView() { |
92 view_->RemoveObserver(this); | 92 view_->RemoveObserver(this); |
93 if (web_view_) | 93 if (web_view_) |
94 web_view_->close(); | 94 web_view_->close(); |
95 if (root_) | 95 if (root_) |
96 root_->RemoveObserver(this); | 96 root_->RemoveObserver(this); |
97 } | 97 } |
98 | 98 |
99 void HTMLDocumentView::AttachToNode(view_manager::Node* node) { | 99 void HTMLDocumentView::AttachToNode(Node* node) { |
100 root_ = node; | 100 root_ = node; |
101 root_->SetActiveView(view_); | 101 root_->SetActiveView(view_); |
102 view_->SetColor(SK_ColorCYAN); // Dummy background color. | 102 view_->SetColor(SK_ColorCYAN); // Dummy background color. |
103 | 103 |
104 web_view_ = blink::WebView::create(this); | 104 web_view_ = blink::WebView::create(this); |
105 ConfigureSettings(web_view_->settings()); | 105 ConfigureSettings(web_view_->settings()); |
106 web_view_->setMainFrame(blink::WebLocalFrame::create(this)); | 106 web_view_->setMainFrame(blink::WebLocalFrame::create(this)); |
107 web_view_->resize(root_->bounds().size()); | 107 web_view_->resize(root_->bounds().size()); |
108 | 108 |
109 root_->AddObserver(this); | 109 root_->AddObserver(this); |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
178 const blink::WebString& stack_trace) { | 178 const blink::WebString& stack_trace) { |
179 } | 179 } |
180 | 180 |
181 void HTMLDocumentView::didNavigateWithinPage( | 181 void HTMLDocumentView::didNavigateWithinPage( |
182 blink::WebLocalFrame* frame, const blink::WebHistoryItem& history_item, | 182 blink::WebLocalFrame* frame, const blink::WebHistoryItem& history_item, |
183 blink::WebHistoryCommitType commit_type) { | 183 blink::WebHistoryCommitType commit_type) { |
184 navigator_host_->DidNavigateLocally(view_->node()->id(), | 184 navigator_host_->DidNavigateLocally(view_->node()->id(), |
185 history_item.urlString().utf8()); | 185 history_item.urlString().utf8()); |
186 } | 186 } |
187 | 187 |
188 void HTMLDocumentView::OnViewInputEvent(view_manager::View* view, | 188 void HTMLDocumentView::OnViewInputEvent(View* view, |
189 const EventPtr& event) { | 189 const EventPtr& event) { |
190 scoped_ptr<blink::WebInputEvent> web_event = | 190 scoped_ptr<blink::WebInputEvent> web_event = |
191 TypeConverter<EventPtr, scoped_ptr<blink::WebInputEvent> >::ConvertTo( | 191 TypeConverter<EventPtr, scoped_ptr<blink::WebInputEvent> >::ConvertTo( |
192 event); | 192 event); |
193 if (web_event) | 193 if (web_event) |
194 web_view_->handleInputEvent(*web_event); | 194 web_view_->handleInputEvent(*web_event); |
195 } | 195 } |
196 | 196 |
197 void HTMLDocumentView::OnNodeBoundsChanged(view_manager::Node* node, | 197 void HTMLDocumentView::OnNodeBoundsChanged(Node* node, |
198 const gfx::Rect& old_bounds, | 198 const gfx::Rect& old_bounds, |
199 const gfx::Rect& new_bounds) { | 199 const gfx::Rect& new_bounds) { |
200 DCHECK_EQ(node, root_); | 200 DCHECK_EQ(node, root_); |
201 web_view_->resize(node->bounds().size()); | 201 web_view_->resize(node->bounds().size()); |
202 } | 202 } |
203 | 203 |
204 void HTMLDocumentView::OnNodeDestroyed(view_manager::Node* node) { | 204 void HTMLDocumentView::OnNodeDestroyed(Node* node) { |
205 DCHECK_EQ(node, root_); | 205 DCHECK_EQ(node, root_); |
206 node->RemoveObserver(this); | 206 node->RemoveObserver(this); |
207 root_ = NULL; | 207 root_ = NULL; |
208 } | 208 } |
209 | 209 |
210 void HTMLDocumentView::Repaint() { | 210 void HTMLDocumentView::Repaint() { |
211 repaint_pending_ = false; | 211 repaint_pending_ = false; |
212 | 212 |
213 web_view_->animate(0.0); | 213 web_view_->animate(0.0); |
214 web_view_->layout(); | 214 web_view_->layout(); |
215 | 215 |
216 int width = web_view_->size().width; | 216 int width = web_view_->size().width; |
217 int height = web_view_->size().height; | 217 int height = web_view_->size().height; |
218 | 218 |
219 skia::RefPtr<SkCanvas> canvas = skia::AdoptRef(SkCanvas::NewRaster( | 219 skia::RefPtr<SkCanvas> canvas = skia::AdoptRef(SkCanvas::NewRaster( |
220 SkImageInfo::MakeN32(width, height, kOpaque_SkAlphaType))); | 220 SkImageInfo::MakeN32(width, height, kOpaque_SkAlphaType))); |
221 | 221 |
222 web_view_->paint(canvas.get(), gfx::Rect(0, 0, width, height)); | 222 web_view_->paint(canvas.get(), gfx::Rect(0, 0, width, height)); |
223 | 223 |
224 view_->SetContents(canvas->getDevice()->accessBitmap(false)); | 224 view_->SetContents(canvas->getDevice()->accessBitmap(false)); |
225 } | 225 } |
226 | 226 |
227 } // namespace mojo | 227 } // namespace mojo |
OLD | NEW |