Index: cc/surfaces/surface_factory.cc |
diff --git a/cc/surfaces/surface_factory.cc b/cc/surfaces/surface_factory.cc |
index 94f98fc7c374c40aaf0f347256a3e251dfd2f163..79bbe5eabd1cc762e8f836cccf02e7902f01e259 100644 |
--- a/cc/surfaces/surface_factory.cc |
+++ b/cc/surfaces/surface_factory.cc |
@@ -5,6 +5,7 @@ |
#include "cc/surfaces/surface_factory.h" |
#include "cc/output/compositor_frame.h" |
+#include "cc/output/copy_output_request.h" |
#include "cc/surfaces/surface.h" |
#include "cc/surfaces/surface_manager.h" |
#include "ui/gfx/geometry/size.h" |
@@ -44,6 +45,18 @@ void SurfaceFactory::SubmitFrame(SurfaceId surface_id, |
manager_->SurfaceModified(surface_id); |
} |
+void SurfaceFactory::RequestCopyOfSurface( |
+ SurfaceId surface_id, |
+ scoped_ptr<CopyOutputRequest> copy_request) { |
+ OwningSurfaceMap::iterator it = surface_map_.find(surface_id); |
+ if (it == surface_map_.end()) { |
+ copy_request->SendEmptyResult(); |
+ return; |
+ } |
+ DCHECK(it->second->factory() == this); |
+ it->second->RequestCopyOfOutput(copy_request.Pass()); |
+} |
+ |
void SurfaceFactory::ReceiveFromChild( |
const TransferableResourceArray& resources) { |
holder_.ReceiveFromChild(resources); |