Commit 7fbb0326 authored by fsamuel's avatar fsamuel Committed by Commit bot

html_viewer/Mandoline: Avoid subclassing WebLayerImpl

cc/blink will go away eventually with the repo merge. We should avoid
subclassing from there as per danakj@'s suggestion.

BUG=none

Review URL: https://codereview.chromium.org/1373003002

Cr-Commit-Position: refs/heads/master@{#351136}
parent 4aae4de1
......@@ -117,8 +117,6 @@ source_set("lib") {
"web_cookie_jar_impl.h",
"web_graphics_context_3d_command_buffer_impl.cc",
"web_graphics_context_3d_command_buffer_impl.h",
"web_layer_impl.cc",
"web_layer_impl.h",
"web_layer_tree_view_impl.cc",
"web_layer_tree_view_impl.h",
"web_mime_registry_impl.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);
......@@ -857,8 +875,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
......@@ -9,6 +9,7 @@
#include "base/basictypes.h"
#include "base/memory/scoped_ptr.h"
#include "cc/layers/surface_layer.h"
#include "components/html_viewer/html_frame_tree_manager.h"
#include "components/html_viewer/replicated_frame_state.h"
#include "components/mus/public/cpp/view_observer.h"
......@@ -288,7 +289,7 @@ class HTMLFrame : public blink::WebFrameClient,
virtual void navigate(const blink::WebURLRequest& request,
bool should_replace_current_entry);
virtual void reload(bool ignore_cache, bool is_client_redirect);
virtual void forwardInputEvent(const blink::WebInputEvent* event);
virtual void frameRectsChanged(const blink::WebRect& frame_rect);
HTMLFrameTreeManager* frame_tree_manager_;
HTMLFrame* parent_;
......@@ -305,6 +306,7 @@ class HTMLFrame : public blink::WebFrameClient,
scoped_ptr<TouchHandler> touch_handler_;
scoped_ptr<cc_blink::WebLayerImpl> web_layer_;
scoped_refptr<cc::SurfaceLayer> surface_layer_;
HTMLFrameDelegate* delegate_;
scoped_ptr<mojo::Binding<web_view::mojom::FrameClient>> frame_client_binding_;
......
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/html_viewer/web_layer_impl.h"
#include "base/bind.h"
#include "cc/layers/layer.h"
#include "components/mus/public/cpp/view.h"
#include "ui/gfx/geometry/dip_util.h"
#include "ui/mojo/geometry/geometry.mojom.h"
using blink::WebFloatPoint;
using blink::WebSize;
namespace html_viewer {
namespace {
// 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.
}
}
WebLayerImpl::WebLayerImpl(mus::View* view, float device_pixel_ratio)
: cc_blink::WebLayerImpl(
cc::SurfaceLayer::Create(cc_blink::WebLayerImpl::LayerSettings(),
base::Bind(&SatisfyCallback),
base::Bind(&RequireCallback))),
view_(view),
device_pixel_ratio_(device_pixel_ratio) {}
WebLayerImpl::~WebLayerImpl() {
}
void WebLayerImpl::setBounds(const WebSize& size) {
gfx::Size size_in_pixels =
gfx::ScaleToCeiledSize(gfx::Size(size), device_pixel_ratio_);
static_cast<cc::SurfaceLayer*>(layer())->
SetSurfaceId(cc::SurfaceId(view_->id()),
device_pixel_ratio_, size_in_pixels);
cc_blink::WebLayerImpl::setBounds(size);
}
} // namespace html_viewer
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_HTML_VIEWER_WEB_LAYER_IMPL_H_
#define COMPONENTS_HTML_VIEWER_WEB_LAYER_IMPL_H_
#include <utility>
#include "cc/blink/web_layer_impl.h"
#include "cc/layers/surface_layer.h"
namespace mus {
class View;
}
namespace html_viewer {
class WebLayerImpl : public cc_blink::WebLayerImpl {
public:
WebLayerImpl(mus::View* view, float device_pixel_ratio);
~WebLayerImpl() override;
// WebLayer implementation.
void setBounds(const blink::WebSize& bounds) override;
private:
mus::View* view_;
const float device_pixel_ratio_;
scoped_refptr<cc::SurfaceLayer> layer_;
DISALLOW_COPY_AND_ASSIGN(WebLayerImpl);
};
} // namespace html_viewer
#endif // COMPONENTS_HTML_VIEWER_WEB_LAYER_IMPL_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment