Index: content/renderer/render_view_impl.cc |
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc |
index a3c5cf06cdfb593c863ad1e65c982822e8a2a58d..bdba3f511d723d1fb402d6a9b971bb9872daa60f 100644 |
--- a/content/renderer/render_view_impl.cc |
+++ b/content/renderer/render_view_impl.cc |
@@ -593,6 +593,7 @@ RenderViewImpl::RenderViewImpl( |
#endif |
session_storage_namespace_id_(session_storage_namespace_id), |
handling_select_range_(false), |
+ next_snapshot_id_(0), |
#if defined(OS_WIN) |
focused_plugin_id_(-1), |
#endif |
@@ -1002,6 +1003,8 @@ bool RenderViewImpl::OnMessageReceived(const IPC::Message& message) { |
#endif |
IPC_MESSAGE_HANDLER(ViewMsg_ReleaseDisambiguationPopupDIB, |
OnReleaseDisambiguationPopupDIB) |
+ IPC_MESSAGE_HANDLER(ViewMsg_WindowSnapshotCompleted, |
+ OnWindowSnapshotCompleted) |
// Have the super handle all other messages. |
IPC_MESSAGE_UNHANDLED(handled = RenderWidget::OnMessageReceived(message)) |
@@ -1708,6 +1711,20 @@ bool RenderViewImpl::SendAndRunNestedMessageLoop(IPC::SyncMessage* message) { |
return Send(message); |
} |
+void RenderViewImpl::GetWindowSnapshot(const WindowSnapshotCallback& callback) { |
+ int id = next_snapshot_id_++; |
+ pending_snapshots_.insert(std::make_pair(id, callback)); |
+ Send(new ViewHostMsg_GetWindowSnapshot(routing_id_, id)); |
+} |
+ |
+void RenderViewImpl::OnWindowSnapshotCompleted(const int snapshot_id, |
jamesr
2012/11/12 18:41:19
we don't typically use const for primitive paramet
|
+ const gfx::Size& size, const std::vector<unsigned char>& png) { |
+ PendingSnapshotMap::iterator it = pending_snapshots_.find(snapshot_id); |
+ DCHECK(it != pending_snapshots_.end()); |
+ it->second.Run(size, png); |
+ pending_snapshots_.erase(it); |
+} |
+ |
// WebKit::WebViewClient ------------------------------------------------------ |
WebView* RenderViewImpl::createView( |