OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/renderer/render_view_impl.h" | 5 #include "content/renderer/render_view_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <cmath> | 8 #include <cmath> |
9 | 9 |
10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
(...skipping 652 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
663 #endif | 663 #endif |
664 #if defined(OS_WIN) | 664 #if defined(OS_WIN) |
665 focused_plugin_id_(-1), | 665 focused_plugin_id_(-1), |
666 #endif | 666 #endif |
667 #if defined(ENABLE_PLUGINS) | 667 #if defined(ENABLE_PLUGINS) |
668 plugin_find_handler_(NULL), | 668 plugin_find_handler_(NULL), |
669 focused_pepper_plugin_(NULL), | 669 focused_pepper_plugin_(NULL), |
670 pepper_last_mouse_event_target_(NULL), | 670 pepper_last_mouse_event_target_(NULL), |
671 #endif | 671 #endif |
672 enumeration_completion_id_(0), | 672 enumeration_completion_id_(0), |
673 session_storage_namespace_id_(params->session_storage_namespace_id), | 673 session_storage_namespace_id_(params->session_storage_namespace_id) { |
674 next_snapshot_id_(0) { | |
675 } | 674 } |
676 | 675 |
677 void RenderViewImpl::Initialize(RenderViewImplParams* params) { | 676 void RenderViewImpl::Initialize(RenderViewImplParams* params) { |
678 routing_id_ = params->routing_id; | 677 routing_id_ = params->routing_id; |
679 surface_id_ = params->surface_id; | 678 surface_id_ = params->surface_id; |
680 if (params->opener_id != MSG_ROUTING_NONE && params->is_renderer_created) | 679 if (params->opener_id != MSG_ROUTING_NONE && params->is_renderer_created) |
681 opener_id_ = params->opener_id; | 680 opener_id_ = params->opener_id; |
682 | 681 |
683 // Ensure we start with a valid next_page_id_ from the browser. | 682 // Ensure we start with a valid next_page_id_ from the browser. |
684 DCHECK_GE(next_page_id_, 0); | 683 DCHECK_GE(next_page_id_, 0); |
(...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1117 OnGetSerializedHtmlDataForCurrentPageWithLocalLinks) | 1116 OnGetSerializedHtmlDataForCurrentPageWithLocalLinks) |
1118 IPC_MESSAGE_HANDLER(ViewMsg_ShowContextMenu, OnShowContextMenu) | 1117 IPC_MESSAGE_HANDLER(ViewMsg_ShowContextMenu, OnShowContextMenu) |
1119 // TODO(viettrungluu): Move to a separate message filter. | 1118 // TODO(viettrungluu): Move to a separate message filter. |
1120 IPC_MESSAGE_HANDLER(ViewMsg_SetHistoryLengthAndPrune, | 1119 IPC_MESSAGE_HANDLER(ViewMsg_SetHistoryLengthAndPrune, |
1121 OnSetHistoryLengthAndPrune) | 1120 OnSetHistoryLengthAndPrune) |
1122 IPC_MESSAGE_HANDLER(ViewMsg_EnableViewSourceMode, OnEnableViewSourceMode) | 1121 IPC_MESSAGE_HANDLER(ViewMsg_EnableViewSourceMode, OnEnableViewSourceMode) |
1123 IPC_MESSAGE_HANDLER(ViewMsg_SetAccessibilityMode, OnSetAccessibilityMode) | 1122 IPC_MESSAGE_HANDLER(ViewMsg_SetAccessibilityMode, OnSetAccessibilityMode) |
1124 IPC_MESSAGE_HANDLER(ViewMsg_DisownOpener, OnDisownOpener) | 1123 IPC_MESSAGE_HANDLER(ViewMsg_DisownOpener, OnDisownOpener) |
1125 IPC_MESSAGE_HANDLER(ViewMsg_ReleaseDisambiguationPopupBitmap, | 1124 IPC_MESSAGE_HANDLER(ViewMsg_ReleaseDisambiguationPopupBitmap, |
1126 OnReleaseDisambiguationPopupBitmap) | 1125 OnReleaseDisambiguationPopupBitmap) |
1127 IPC_MESSAGE_HANDLER(ViewMsg_WindowSnapshotCompleted, | 1126 IPC_MESSAGE_HANDLER(ViewMsg_ForceRedraw, OnForceRedraw) |
1128 OnWindowSnapshotCompleted) | |
1129 IPC_MESSAGE_HANDLER(ViewMsg_SelectWordAroundCaret, OnSelectWordAroundCaret) | 1127 IPC_MESSAGE_HANDLER(ViewMsg_SelectWordAroundCaret, OnSelectWordAroundCaret) |
1130 #if defined(OS_ANDROID) | 1128 #if defined(OS_ANDROID) |
1131 IPC_MESSAGE_HANDLER(InputMsg_ActivateNearestFindResult, | 1129 IPC_MESSAGE_HANDLER(InputMsg_ActivateNearestFindResult, |
1132 OnActivateNearestFindResult) | 1130 OnActivateNearestFindResult) |
1133 IPC_MESSAGE_HANDLER(ViewMsg_FindMatchRects, OnFindMatchRects) | 1131 IPC_MESSAGE_HANDLER(ViewMsg_FindMatchRects, OnFindMatchRects) |
1134 IPC_MESSAGE_HANDLER(ViewMsg_SelectPopupMenuItems, OnSelectPopupMenuItems) | 1132 IPC_MESSAGE_HANDLER(ViewMsg_SelectPopupMenuItems, OnSelectPopupMenuItems) |
1135 IPC_MESSAGE_HANDLER(ViewMsg_UpdateTopControlsState, | 1133 IPC_MESSAGE_HANDLER(ViewMsg_UpdateTopControlsState, |
1136 OnUpdateTopControlsState) | 1134 OnUpdateTopControlsState) |
1137 IPC_MESSAGE_HANDLER(ViewMsg_ExtractSmartClipData, OnExtractSmartClipData) | 1135 IPC_MESSAGE_HANDLER(ViewMsg_ExtractSmartClipData, OnExtractSmartClipData) |
1138 #elif defined(OS_MACOSX) | 1136 #elif defined(OS_MACOSX) |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1335 // equivalent of WebView::willEnterModalLoop. In the case of showModalDialog | 1333 // equivalent of WebView::willEnterModalLoop. In the case of showModalDialog |
1336 // it is particularly important that we do not call willEnterModalLoop as | 1334 // it is particularly important that we do not call willEnterModalLoop as |
1337 // that would defer resource loads for the dialog itself. | 1335 // that would defer resource loads for the dialog itself. |
1338 if (RenderThreadImpl::current()) // Will be NULL during unit tests. | 1336 if (RenderThreadImpl::current()) // Will be NULL during unit tests. |
1339 RenderThreadImpl::current()->DoNotNotifyWebKitOfModalLoop(); | 1337 RenderThreadImpl::current()->DoNotNotifyWebKitOfModalLoop(); |
1340 | 1338 |
1341 message->EnableMessagePumping(); // Runs a nested message loop. | 1339 message->EnableMessagePumping(); // Runs a nested message loop. |
1342 return Send(message); | 1340 return Send(message); |
1343 } | 1341 } |
1344 | 1342 |
1345 void RenderViewImpl::GetWindowSnapshot(const WindowSnapshotCallback& callback) { | 1343 void RenderViewImpl::OnForceRedraw(int id) { |
1346 int id = next_snapshot_id_++; | |
1347 pending_snapshots_.insert(std::make_pair(id, callback)); | |
1348 ui::LatencyInfo latency_info; | 1344 ui::LatencyInfo latency_info; |
1349 latency_info.AddLatencyNumber(ui::WINDOW_SNAPSHOT_FRAME_NUMBER_COMPONENT, | 1345 latency_info.AddLatencyNumber(ui::WINDOW_SNAPSHOT_FRAME_NUMBER_COMPONENT, |
1350 0, | 1346 0, |
1351 id); | 1347 id); |
1352 scoped_ptr<cc::SwapPromiseMonitor> latency_info_swap_promise_monitor; | 1348 scoped_ptr<cc::SwapPromiseMonitor> latency_info_swap_promise_monitor; |
1353 if (RenderWidgetCompositor* rwc = compositor()) { | 1349 if (RenderWidgetCompositor* rwc = compositor()) { |
1354 latency_info_swap_promise_monitor = | 1350 latency_info_swap_promise_monitor = |
1355 rwc->CreateLatencyInfoSwapPromiseMonitor(&latency_info).Pass(); | 1351 rwc->CreateLatencyInfoSwapPromiseMonitor(&latency_info).Pass(); |
1356 } | 1352 } |
1357 ScheduleCompositeWithForcedRedraw(); | 1353 ScheduleCompositeWithForcedRedraw(); |
1358 } | 1354 } |
1359 | 1355 |
1360 void RenderViewImpl::OnWindowSnapshotCompleted(const int snapshot_id, | |
1361 const gfx::Size& size, const std::vector<unsigned char>& png) { | |
1362 | |
1363 // Any pending snapshots with a lower ID than the one received are considered | |
1364 // to be implicitly complete, and returned the same snapshot data. | |
1365 PendingSnapshotMap::iterator it = pending_snapshots_.begin(); | |
1366 while(it != pending_snapshots_.end()) { | |
1367 if (it->first <= snapshot_id) { | |
1368 it->second.Run(size, png); | |
1369 pending_snapshots_.erase(it++); | |
1370 } else { | |
1371 ++it; | |
1372 } | |
1373 } | |
1374 } | |
1375 | |
1376 // blink::WebViewClient ------------------------------------------------------ | 1356 // blink::WebViewClient ------------------------------------------------------ |
1377 | 1357 |
1378 WebView* RenderViewImpl::createView(WebLocalFrame* creator, | 1358 WebView* RenderViewImpl::createView(WebLocalFrame* creator, |
1379 const WebURLRequest& request, | 1359 const WebURLRequest& request, |
1380 const WebWindowFeatures& features, | 1360 const WebWindowFeatures& features, |
1381 const WebString& frame_name, | 1361 const WebString& frame_name, |
1382 WebNavigationPolicy policy, | 1362 WebNavigationPolicy policy, |
1383 bool suppress_opener) { | 1363 bool suppress_opener) { |
1384 ViewHostMsg_CreateWindow_Params params; | 1364 ViewHostMsg_CreateWindow_Params params; |
1385 params.opener_id = routing_id_; | 1365 params.opener_id = routing_id_; |
(...skipping 2672 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4058 std::vector<gfx::Size> sizes; | 4038 std::vector<gfx::Size> sizes; |
4059 ConvertToFaviconSizes(icon_urls[i].sizes(), &sizes); | 4039 ConvertToFaviconSizes(icon_urls[i].sizes(), &sizes); |
4060 if (!url.isEmpty()) | 4040 if (!url.isEmpty()) |
4061 urls.push_back( | 4041 urls.push_back( |
4062 FaviconURL(url, ToFaviconType(icon_urls[i].iconType()), sizes)); | 4042 FaviconURL(url, ToFaviconType(icon_urls[i].iconType()), sizes)); |
4063 } | 4043 } |
4064 SendUpdateFaviconURL(urls); | 4044 SendUpdateFaviconURL(urls); |
4065 } | 4045 } |
4066 | 4046 |
4067 } // namespace content | 4047 } // namespace content |
OLD | NEW |