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
3 // found in the LICENSE file.
5 #include "components/html_viewer/web_layer_impl.h"
7 #include "cc/layers/layer.h"
8 #include "components/html_viewer/frame.h"
9 #include "ui/mojo/geometry/geometry.mojom.h"
11 using blink::WebFloatPoint
;
14 namespace html_viewer
{
16 WebLayerImpl::WebLayerImpl(Frame
* frame
)
20 WebLayerImpl::~WebLayerImpl() {
23 void WebLayerImpl::setBounds(const WebSize
& size
) {
24 mojo::Rect rect
= frame_
->view()->bounds();
25 rect
.width
= size
.width
;
26 rect
.height
= size
.height
;
27 frame_
->view()->SetBounds(rect
);
28 cc_blink::WebLayerImpl::setBounds(size
);
31 void WebLayerImpl::setPosition(const WebFloatPoint
& position
) {
32 mojo::Rect rect
= frame_
->view()->bounds();
35 // TODO(fsamuel): This is a temporary hack until we have a UI process in
36 // Mandoline. The View will always lag behind the cc::Layer.
37 cc::Layer
* current_layer
= layer();
38 while (current_layer
) {
39 rect
.x
+= current_layer
->position().x();
40 rect
.x
-= current_layer
->scroll_offset().x();
41 rect
.y
+= current_layer
->position().y();
42 rect
.y
-= current_layer
->scroll_offset().y();
43 current_layer
= current_layer
->parent();
45 frame_
->view()->SetBounds(rect
);
46 cc_blink::WebLayerImpl::setPosition(position
);
49 } // namespace html_viewer