Chromium Code Reviews| 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( |