Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1727)

Unified Diff: sky/shell/ui/engine.cc

Issue 936883002: Connect Sky and Ganesh in SkyShell (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: sort includes Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: sky/shell/ui/engine.cc
diff --git a/sky/shell/ui/engine.cc b/sky/shell/ui/engine.cc
index 07deb847c24e59da3022b478b6b4f12c87ab4044..dd3e318153bd7b71e418807750eb6b7c5394d43a 100644
--- a/sky/shell/ui/engine.cc
+++ b/sky/shell/ui/engine.cc
@@ -4,15 +4,22 @@
#include "sky/shell/ui/engine.h"
+#include "base/bind.h"
#include "sky/engine/public/web/Sky.h"
#include "sky/engine/public/web/WebLocalFrame.h"
#include "sky/engine/public/web/WebView.h"
+#include "sky/shell/ui/animator.h"
#include "sky/shell/ui/platform_impl.h"
+#include "third_party/skia/include/core/SkCanvas.h"
+#include "third_party/skia/include/core/SkPictureRecorder.h"
namespace sky {
namespace shell {
-Engine::Engine() : web_view_(nullptr), weak_factory_(this) {
+Engine::Engine(const Config& config)
+ : animator_(new Animator(config, this)),
+ web_view_(nullptr),
+ weak_factory_(this) {
}
Engine::~Engine() {
@@ -24,20 +31,54 @@ base::WeakPtr<Engine> Engine::GetWeakPtr() {
return weak_factory_.GetWeakPtr();
}
-void Engine::Init() {
- platform_impl_.reset(new PlatformImpl);
+void Engine::Init(mojo::ScopedMessagePipeHandle service_provider) {
+ platform_impl_.reset(new PlatformImpl(mojo::MakeProxy<mojo::ServiceProvider>(
+ service_provider.Pass())));
blink::initialize(platform_impl_.get());
web_view_ = blink::WebView::create(this);
web_view_->setMainFrame(blink::WebLocalFrame::create(this));
+ web_view_->mainFrame()->load(
+ GURL("http://127.0.0.1:8000/sky/examples/spinning-square.sky"));
}
-void Engine::OnViewportMetricsChanged(const gfx::Size& size,
+void Engine::BeginFrame(base::TimeTicks frame_time) {
+ double frame_time_sec = (frame_time - base::TimeTicks()).InSecondsF();
+ double deadline_sec = frame_time_sec;
+ double interval_sec = 1.0 / 60;
+ blink::WebBeginFrameArgs args(frame_time_sec, deadline_sec, interval_sec);
+
+ web_view_->beginFrame(args);
+ web_view_->layout();
+}
+
+skia::RefPtr<SkPicture> Engine::Paint() {
+ SkRTreeFactory factory;
+ SkPictureRecorder recorder;
+ auto canvas = skia::SharePtr(recorder.beginRecording(
+ physical_size_.width(), physical_size_.height(), &factory,
+ SkPictureRecorder::kComputeSaveLayerInfo_RecordFlag));
+
+ web_view_->paint(canvas.get(), blink::WebRect(0, 0, physical_size_.width(),
eseidel 2015/02/18 20:55:57 blink::WebRect(gfx::Rect(physical_size))
+ physical_size_.height()));
+
+ return skia::AdoptRef(recorder.endRecordingAsPicture());
+}
+
+void Engine::OnViewportMetricsChanged(const gfx::Size& physical_size,
float device_pixel_ratio) {
- blink::WebSize web_size(size.width() / device_pixel_ratio,
- size.height() / device_pixel_ratio);
+ physical_size_ = physical_size;
web_view_->setDeviceScaleFactor(device_pixel_ratio);
- web_view_->resize(web_size);
+ web_view_->resize(
eseidel 2015/02/18 20:55:57 blink::WebSize(gfx::ScaleSize(physical_size, 1 / d
+ blink::WebSize(physical_size.width() / device_pixel_ratio,
+ physical_size.height() / device_pixel_ratio));
+}
+
+void Engine::initializeLayerTreeView() {
+}
+
+void Engine::scheduleVisualUpdate() {
+ animator_->RequestFrame();
}
} // namespace shell

Powered by Google App Engine
This is Rietveld 408576698