Index: components/html_viewer/html_frame.cc |
diff --git a/components/html_viewer/html_frame.cc b/components/html_viewer/html_frame.cc |
index edaed4f2c63cd875ffa769a50c1c4d5da377ba7f..fc1f6c0544e1325fbcef4c90d9cd2a091e05c289 100644 |
--- a/components/html_viewer/html_frame.cc |
+++ b/components/html_viewer/html_frame.cc |
@@ -12,6 +12,8 @@ |
#include "base/stl_util.h" |
#include "base/strings/string_util.h" |
#include "base/thread_task_runner_handle.h" |
+#include "cc/blink/web_layer_impl.h" |
+#include "cc/surfaces/surface_id.h" |
#include "components/html_viewer/ax_provider_impl.h" |
#include "components/html_viewer/blink_basic_type_converters.h" |
#include "components/html_viewer/blink_input_events_type_converters.h" |
@@ -28,7 +30,6 @@ |
#include "components/html_viewer/media_factory.h" |
#include "components/html_viewer/stats_collection_controller.h" |
#include "components/html_viewer/touch_handler.h" |
-#include "components/html_viewer/web_layer_impl.h" |
#include "components/html_viewer/web_layer_tree_view_impl.h" |
#include "components/html_viewer/web_storage_namespace_impl.h" |
#include "components/html_viewer/web_url_loader_impl.h" |
@@ -102,6 +103,17 @@ HTMLFrame* GetPreviousSibling(HTMLFrame* frame) { |
return (iter == frame->parent()->children().begin()) ? nullptr : *(--iter); |
} |
+// See surface_layer.h for a description of this callback. |
+void SatisfyCallback(cc::SurfaceSequence sequence) { |
+ // TODO(fsamuel): Implement this. |
+} |
+ |
+// See surface_layer.h for a description of this callback. |
+void RequireCallback(cc::SurfaceId surface_id, |
+ cc::SurfaceSequence sequence) { |
+ // TODO(fsamuel): Implement this. |
+} |
+ |
} // namespace |
HTMLFrame::HTMLFrame(CreateParams* params) |
@@ -567,11 +579,17 @@ void HTMLFrame::SwapToRemote() { |
// swap() ends up calling us back and we then close the frame, which deletes |
// it. |
web_frame_->swap(remote_frame); |
- // TODO(sky): this isn't quite right, but WebLayerImpl is temporary. |
if (owned_view_) { |
- web_layer_.reset( |
- new WebLayerImpl(owned_view_->view(), |
- global_state()->device_pixel_ratio())); |
+ surface_layer_ = |
+ cc::SurfaceLayer::Create(cc_blink::WebLayerImpl::LayerSettings(), |
+ base::Bind(&SatisfyCallback), |
+ base::Bind(&RequireCallback)); |
+ surface_layer_->SetSurfaceId( |
+ cc::SurfaceId(owned_view_->view()->id()), |
+ global_state()->device_pixel_ratio(), |
+ owned_view_->view()->bounds().To<gfx::Rect>().size()); |
+ |
+ web_layer_.reset(new cc_blink::WebLayerImpl(surface_layer_)); |
} |
remote_frame->setRemoteWebLayer(web_layer_.get()); |
remote_frame->setReplicatedName(state_.name); |
@@ -864,8 +882,25 @@ void HTMLFrame::reload(bool ignore_cache, bool is_client_redirect) { |
NOTIMPLEMENTED(); |
} |
-void HTMLFrame::forwardInputEvent(const blink::WebInputEvent* event) { |
- NOTIMPLEMENTED(); |
+void HTMLFrame::frameRectsChanged(const blink::WebRect& frame_rect) { |
+ // Only the owner of view can update its size. |
+ if (!owned_view_) |
+ return; |
+ |
+ const gfx::Rect rect_in_dip(frame_rect.x, frame_rect.y, frame_rect.width, |
+ frame_rect.height); |
+ const gfx::Rect rect_in_pixels(gfx::ConvertRectToPixel( |
+ global_state()->device_pixel_ratio(), rect_in_dip)); |
+ const mojo::RectPtr mojo_rect_in_pixels(mojo::Rect::From(rect_in_pixels)); |
+ owned_view_->view()->SetBounds(*mojo_rect_in_pixels); |
+ |
+ if (!surface_layer_) |
+ return; |
+ |
+ surface_layer_->SetSurfaceId( |
+ cc::SurfaceId(owned_view_->view()->id()), |
+ global_state()->device_pixel_ratio(), |
+ owned_view_->view()->bounds().To<gfx::Rect>().size()); |
} |
} // namespace mojo |