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 826 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
837 // This ensures we are in a unique origin that others cannot script. | 837 // This ensures we are in a unique origin that others cannot script. |
838 if (is_swapped_out_ && webview()->mainFrame()->isWebLocalFrame()) | 838 if (is_swapped_out_ && webview()->mainFrame()->isWebLocalFrame()) |
839 main_render_frame_->NavigateToSwappedOutURL(); | 839 main_render_frame_->NavigateToSwappedOutURL(); |
840 } | 840 } |
841 | 841 |
842 RenderViewImpl::~RenderViewImpl() { | 842 RenderViewImpl::~RenderViewImpl() { |
843 for (BitmapMap::iterator it = disambiguation_bitmaps_.begin(); | 843 for (BitmapMap::iterator it = disambiguation_bitmaps_.begin(); |
844 it != disambiguation_bitmaps_.end(); | 844 it != disambiguation_bitmaps_.end(); |
845 ++it) | 845 ++it) |
846 delete it->second; | 846 delete it->second; |
847 history_page_ids_.clear(); | |
848 | |
849 base::debug::TraceLog::GetInstance()->RemoveProcessLabel(routing_id_); | 847 base::debug::TraceLog::GetInstance()->RemoveProcessLabel(routing_id_); |
850 | 848 |
851 // If file chooser is still waiting for answer, dispatch empty answer. | 849 // If file chooser is still waiting for answer, dispatch empty answer. |
852 while (!file_chooser_completions_.empty()) { | 850 while (!file_chooser_completions_.empty()) { |
853 if (file_chooser_completions_.front()->completion) { | 851 if (file_chooser_completions_.front()->completion) { |
854 file_chooser_completions_.front()->completion->didChooseFile( | 852 file_chooser_completions_.front()->completion->didChooseFile( |
855 WebVector<WebString>()); | 853 WebVector<WebString>()); |
856 } | 854 } |
857 file_chooser_completions_.pop_front(); | 855 file_chooser_completions_.pop_front(); |
858 } | 856 } |
(...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1337 IPC_MESSAGE_HANDLER(ViewMsg_MediaPlayerActionAt, OnMediaPlayerActionAt) | 1335 IPC_MESSAGE_HANDLER(ViewMsg_MediaPlayerActionAt, OnMediaPlayerActionAt) |
1338 IPC_MESSAGE_HANDLER(ViewMsg_PluginActionAt, OnPluginActionAt) | 1336 IPC_MESSAGE_HANDLER(ViewMsg_PluginActionAt, OnPluginActionAt) |
1339 IPC_MESSAGE_HANDLER(ViewMsg_SetActive, OnSetActive) | 1337 IPC_MESSAGE_HANDLER(ViewMsg_SetActive, OnSetActive) |
1340 IPC_MESSAGE_HANDLER(ViewMsg_GetAllSavableResourceLinksForCurrentPage, | 1338 IPC_MESSAGE_HANDLER(ViewMsg_GetAllSavableResourceLinksForCurrentPage, |
1341 OnGetAllSavableResourceLinksForCurrentPage) | 1339 OnGetAllSavableResourceLinksForCurrentPage) |
1342 IPC_MESSAGE_HANDLER( | 1340 IPC_MESSAGE_HANDLER( |
1343 ViewMsg_GetSerializedHtmlDataForCurrentPageWithLocalLinks, | 1341 ViewMsg_GetSerializedHtmlDataForCurrentPageWithLocalLinks, |
1344 OnGetSerializedHtmlDataForCurrentPageWithLocalLinks) | 1342 OnGetSerializedHtmlDataForCurrentPageWithLocalLinks) |
1345 IPC_MESSAGE_HANDLER(ViewMsg_ShowContextMenu, OnShowContextMenu) | 1343 IPC_MESSAGE_HANDLER(ViewMsg_ShowContextMenu, OnShowContextMenu) |
1346 // TODO(viettrungluu): Move to a separate message filter. | 1344 // TODO(viettrungluu): Move to a separate message filter. |
1347 IPC_MESSAGE_HANDLER(ViewMsg_SetHistoryLengthAndPrune, | 1345 IPC_MESSAGE_HANDLER(ViewMsg_SetHistoryOffsetAndLength, |
1348 OnSetHistoryLengthAndPrune) | 1346 OnSetHistoryOffsetAndLength) |
1349 IPC_MESSAGE_HANDLER(ViewMsg_EnableViewSourceMode, OnEnableViewSourceMode) | 1347 IPC_MESSAGE_HANDLER(ViewMsg_EnableViewSourceMode, OnEnableViewSourceMode) |
1350 IPC_MESSAGE_HANDLER(ViewMsg_ReleaseDisambiguationPopupBitmap, | 1348 IPC_MESSAGE_HANDLER(ViewMsg_ReleaseDisambiguationPopupBitmap, |
1351 OnReleaseDisambiguationPopupBitmap) | 1349 OnReleaseDisambiguationPopupBitmap) |
1352 IPC_MESSAGE_HANDLER(ViewMsg_WindowSnapshotCompleted, | 1350 IPC_MESSAGE_HANDLER(ViewMsg_WindowSnapshotCompleted, |
1353 OnWindowSnapshotCompleted) | 1351 OnWindowSnapshotCompleted) |
1354 IPC_MESSAGE_HANDLER(ViewMsg_ForceRedraw, OnForceRedraw) | 1352 IPC_MESSAGE_HANDLER(ViewMsg_ForceRedraw, OnForceRedraw) |
1355 IPC_MESSAGE_HANDLER(ViewMsg_SelectWordAroundCaret, OnSelectWordAroundCaret) | 1353 IPC_MESSAGE_HANDLER(ViewMsg_SelectWordAroundCaret, OnSelectWordAroundCaret) |
1356 #if defined(OS_ANDROID) | 1354 #if defined(OS_ANDROID) |
1357 IPC_MESSAGE_HANDLER(InputMsg_ActivateNearestFindResult, | 1355 IPC_MESSAGE_HANDLER(InputMsg_ActivateNearestFindResult, |
1358 OnActivateNearestFindResult) | 1356 OnActivateNearestFindResult) |
(...skipping 22 matching lines...) Expand all Loading... | |
1381 | 1379 |
1382 void RenderViewImpl::OnSelectWordAroundCaret() { | 1380 void RenderViewImpl::OnSelectWordAroundCaret() { |
1383 if (!webview()) | 1381 if (!webview()) |
1384 return; | 1382 return; |
1385 | 1383 |
1386 handling_input_event_ = true; | 1384 handling_input_event_ = true; |
1387 webview()->focusedFrame()->selectWordAroundCaret(); | 1385 webview()->focusedFrame()->selectWordAroundCaret(); |
1388 handling_input_event_ = false; | 1386 handling_input_event_ = false; |
1389 } | 1387 } |
1390 | 1388 |
1391 bool RenderViewImpl::IsBackForwardToStaleEntry(const PageState& state, | |
1392 int pending_history_list_offset, | |
1393 int32 page_id, | |
1394 bool is_reload) { | |
1395 // Make sure this isn't a back/forward to an entry we have already cropped | |
1396 // or replaced from our history, before the browser knew about it. If so, | |
1397 // a new navigation has committed in the mean time, and we can ignore this. | |
1398 bool is_back_forward = !is_reload && state.IsValid(); | |
1399 | |
1400 // Note: if the history_list_length_ is 0 for a back/forward, we must be | |
Charlie Reis
2014/12/03 23:48:07
Oh, is this the reason you added the SetHistoryOff
Avi (use Gerrit)
2014/12/04 21:15:16
No, and I'm not sure I see what you're talking abo
Charlie Reis
2014/12/04 23:13:58
Your other reply said:
'So either we set a flag in
Avi (use Gerrit)
2014/12/05 22:16:39
Oh.... right! Yes, got it.
| |
1401 // restoring from a previous session. We'll update our state in OnNavigate. | |
1402 if (!is_back_forward || history_list_length_ <= 0) | |
1403 return false; | |
1404 | |
1405 DCHECK_EQ(static_cast<int>(history_page_ids_.size()), history_list_length_); | |
1406 | |
1407 // Check for whether the forward history has been cropped due to a recent | |
1408 // navigation the browser didn't know about. | |
1409 if (pending_history_list_offset >= history_list_length_) | |
1410 return true; | |
1411 | |
1412 // Check for whether this entry has been replaced with a new one. | |
1413 int expected_page_id = | |
1414 history_page_ids_[pending_history_list_offset]; | |
1415 if (expected_page_id > 0 && page_id != expected_page_id) { | |
1416 if (page_id < expected_page_id) | |
1417 return true; | |
1418 | |
1419 // Otherwise we've removed an earlier entry and should have shifted all | |
1420 // entries left. For now, it's ok to lazily update the list. | |
1421 // TODO(creis): Notify all live renderers when we remove entries from | |
1422 // the front of the list, so that we don't hit this case. | |
1423 history_page_ids_[pending_history_list_offset] = page_id; | |
1424 } | |
1425 | |
1426 return false; | |
1427 } | |
1428 | |
1429 void RenderViewImpl::OnCopyImageAt(int x, int y) { | 1389 void RenderViewImpl::OnCopyImageAt(int x, int y) { |
1430 webview()->copyImageAt(WebPoint(x, y)); | 1390 webview()->copyImageAt(WebPoint(x, y)); |
1431 } | 1391 } |
1432 | 1392 |
1433 void RenderViewImpl::OnSaveImageAt(int x, int y) { | 1393 void RenderViewImpl::OnSaveImageAt(int x, int y) { |
1434 webview()->saveImageAt(WebPoint(x, y)); | 1394 webview()->saveImageAt(WebPoint(x, y)); |
1435 } | 1395 } |
1436 | 1396 |
1437 void RenderViewImpl::OnUpdateTargetURLAck() { | 1397 void RenderViewImpl::OnUpdateTargetURLAck() { |
1438 // Check if there is a targeturl waiting to be sent. | 1398 // Check if there is a targeturl waiting to be sent. |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1473 has_scrolled_focused_editable_node_into_rect_ = true; | 1433 has_scrolled_focused_editable_node_into_rect_ = true; |
1474 webview()->scrollFocusedNodeIntoRect(rect); | 1434 webview()->scrollFocusedNodeIntoRect(rect); |
1475 } | 1435 } |
1476 } | 1436 } |
1477 | 1437 |
1478 void RenderViewImpl::OnSetEditCommandsForNextKeyEvent( | 1438 void RenderViewImpl::OnSetEditCommandsForNextKeyEvent( |
1479 const EditCommands& edit_commands) { | 1439 const EditCommands& edit_commands) { |
1480 edit_commands_ = edit_commands; | 1440 edit_commands_ = edit_commands; |
1481 } | 1441 } |
1482 | 1442 |
1483 void RenderViewImpl::OnSetHistoryLengthAndPrune(int history_length, | 1443 void RenderViewImpl::OnSetHistoryOffsetAndLength(int history_offset, |
1484 int32 minimum_page_id) { | 1444 int history_length) { |
1445 DCHECK_GE(history_offset, -1); | |
1485 DCHECK_GE(history_length, 0); | 1446 DCHECK_GE(history_length, 0); |
1486 DCHECK(history_list_offset_ == history_list_length_ - 1); | |
1487 DCHECK_GE(minimum_page_id, -1); | |
1488 | 1447 |
1489 // Generate the new list. | 1448 history_list_offset_ = history_offset; |
1490 std::vector<int32> new_history_page_ids(history_length, -1); | 1449 history_list_length_ = history_length; |
1491 for (size_t i = 0; i < history_page_ids_.size(); ++i) { | |
1492 if (minimum_page_id >= 0 && history_page_ids_[i] < minimum_page_id) | |
1493 continue; | |
1494 new_history_page_ids.push_back(history_page_ids_[i]); | |
1495 } | |
1496 new_history_page_ids.swap(history_page_ids_); | |
1497 | |
1498 // Update indexes. | |
1499 history_list_length_ = history_page_ids_.size(); | |
1500 history_list_offset_ = history_list_length_ - 1; | |
1501 } | 1450 } |
1502 | 1451 |
1503 | |
1504 void RenderViewImpl::OnSetInitialFocus(bool reverse) { | 1452 void RenderViewImpl::OnSetInitialFocus(bool reverse) { |
1505 if (!webview()) | 1453 if (!webview()) |
1506 return; | 1454 return; |
1507 webview()->setInitialFocus(reverse); | 1455 webview()->setInitialFocus(reverse); |
1508 } | 1456 } |
1509 | 1457 |
1510 #if defined(OS_MACOSX) | 1458 #if defined(OS_MACOSX) |
1511 void RenderViewImpl::OnSetInLiveResize(bool in_live_resize) { | 1459 void RenderViewImpl::OnSetInLiveResize(bool in_live_resize) { |
1512 if (!webview()) | 1460 if (!webview()) |
1513 return; | 1461 return; |
(...skipping 2682 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4196 std::vector<gfx::Size> sizes; | 4144 std::vector<gfx::Size> sizes; |
4197 ConvertToFaviconSizes(icon_urls[i].sizes(), &sizes); | 4145 ConvertToFaviconSizes(icon_urls[i].sizes(), &sizes); |
4198 if (!url.isEmpty()) | 4146 if (!url.isEmpty()) |
4199 urls.push_back( | 4147 urls.push_back( |
4200 FaviconURL(url, ToFaviconType(icon_urls[i].iconType()), sizes)); | 4148 FaviconURL(url, ToFaviconType(icon_urls[i].iconType()), sizes)); |
4201 } | 4149 } |
4202 SendUpdateFaviconURL(urls); | 4150 SendUpdateFaviconURL(urls); |
4203 } | 4151 } |
4204 | 4152 |
4205 } // namespace content | 4153 } // namespace content |
OLD | NEW |