Index: services/gfx/compositor/graph/snapshot.cc |
diff --git a/services/gfx/compositor/graph/snapshot.cc b/services/gfx/compositor/graph/snapshot.cc |
index 66f44e987422516606efa5d2465250f974517fa9..8371cf7a472999a87420bab68cdc8fdcda2bb15a 100644 |
--- a/services/gfx/compositor/graph/snapshot.cc |
+++ b/services/gfx/compositor/graph/snapshot.cc |
@@ -5,9 +5,11 @@ |
#include "services/gfx/compositor/graph/snapshot.h" |
#include "base/logging.h" |
+#include "mojo/skia/type_converters.h" |
#include "services/gfx/compositor/graph/scene_content.h" |
#include "services/gfx/compositor/graph/scene_def.h" |
#include "services/gfx/compositor/render/render_frame.h" |
+#include "third_party/skia/include/core/SkMatrix.h" |
#include "third_party/skia/include/core/SkPictureRecorder.h" |
#include "third_party/skia/include/core/SkRect.h" |
@@ -25,21 +27,26 @@ std::shared_ptr<RenderFrame> Snapshot::CreateFrame( |
const mojo::Rect& viewport, |
const mojo::gfx::composition::FrameInfo& frame_info) const { |
DCHECK(!is_blocked()); |
+ DCHECK(root_scene_content_); |
- SkRect sk_viewport = |
- SkRect::MakeXYWH(viewport.x, viewport.y, viewport.width, viewport.height); |
+ SkRect sk_viewport = viewport.To<SkRect>(); |
SkPictureRecorder recorder; |
recorder.beginRecording(sk_viewport); |
- |
- const NodeDef* root_node = root_scene_content_->GetRootNodeIfExists(); |
- DCHECK(root_node); // otherwise would have failed to snapshot |
- root_node->RecordPicture(root_scene_content_.get(), this, |
- recorder.getRecordingCanvas()); |
- |
+ root_scene_content_->RecordPicture(this, recorder.getRecordingCanvas()); |
return RenderFrame::Create(skia::AdoptRef(recorder.endRecordingAsPicture()), |
sk_viewport, frame_info); |
} |
+void Snapshot::HitTest(const mojo::Point& point, |
+ mojo::gfx::composition::HitTestResult* result) const { |
+ DCHECK(result); |
+ DCHECK(!is_blocked()); |
+ DCHECK(root_scene_content_); |
+ |
+ root_scene_content_->HitTest(this, point.To<SkPoint>(), SkMatrix::I(), |
+ &result->root); |
+} |
+ |
bool Snapshot::IsNodeBlocked(const NodeDef* node) const { |
DCHECK(!is_blocked()); |