OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "chrome/renderer/render_view.h" | 5 #include "chrome/renderer/render_view.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
68 #include "gfx/native_widget_types.h" | 68 #include "gfx/native_widget_types.h" |
69 #include "grit/generated_resources.h" | 69 #include "grit/generated_resources.h" |
70 #include "grit/renderer_resources.h" | 70 #include "grit/renderer_resources.h" |
71 #include "net/base/data_url.h" | 71 #include "net/base/data_url.h" |
72 #include "net/base/escape.h" | 72 #include "net/base/escape.h" |
73 #include "net/base/net_errors.h" | 73 #include "net/base/net_errors.h" |
74 #include "skia/ext/bitmap_platform_device.h" | 74 #include "skia/ext/bitmap_platform_device.h" |
75 #include "skia/ext/image_operations.h" | 75 #include "skia/ext/image_operations.h" |
76 #include "third_party/cld/encodings/compact_lang_det/win/cld_unicodetext.h" | 76 #include "third_party/cld/encodings/compact_lang_det/win/cld_unicodetext.h" |
77 #include "third_party/WebKit/WebKit/chromium/public/WebAccessibilityCache.h" | 77 #include "third_party/WebKit/WebKit/chromium/public/WebAccessibilityCache.h" |
| 78 #include "third_party/WebKit/WebKit/chromium/public/WebAccessibilityObject.h" |
78 #include "third_party/WebKit/WebKit/chromium/public/WebCString.h" | 79 #include "third_party/WebKit/WebKit/chromium/public/WebCString.h" |
79 #include "third_party/WebKit/WebKit/chromium/public/WebDataSource.h" | 80 #include "third_party/WebKit/WebKit/chromium/public/WebDataSource.h" |
80 #include "third_party/WebKit/WebKit/chromium/public/WebDevToolsAgent.h" | 81 #include "third_party/WebKit/WebKit/chromium/public/WebDevToolsAgent.h" |
81 #include "third_party/WebKit/WebKit/chromium/public/WebDocument.h" | 82 #include "third_party/WebKit/WebKit/chromium/public/WebDocument.h" |
82 #include "third_party/WebKit/WebKit/chromium/public/WebDragData.h" | 83 #include "third_party/WebKit/WebKit/chromium/public/WebDragData.h" |
83 #include "third_party/WebKit/WebKit/chromium/public/WebFileChooserParams.h" | 84 #include "third_party/WebKit/WebKit/chromium/public/WebFileChooserParams.h" |
84 #include "third_party/WebKit/WebKit/chromium/public/WebFormControlElement.h" | 85 #include "third_party/WebKit/WebKit/chromium/public/WebFormControlElement.h" |
85 #include "third_party/WebKit/WebKit/chromium/public/WebFormElement.h" | 86 #include "third_party/WebKit/WebKit/chromium/public/WebFormElement.h" |
86 #include "third_party/WebKit/WebKit/chromium/public/WebFrame.h" | 87 #include "third_party/WebKit/WebKit/chromium/public/WebFrame.h" |
87 #include "third_party/WebKit/WebKit/chromium/public/WebHistoryItem.h" | 88 #include "third_party/WebKit/WebKit/chromium/public/WebHistoryItem.h" |
(...skipping 541 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
629 IPC_MESSAGE_HANDLER(ViewMsg_SetAltErrorPageURL, OnSetAltErrorPageURL) | 630 IPC_MESSAGE_HANDLER(ViewMsg_SetAltErrorPageURL, OnSetAltErrorPageURL) |
630 IPC_MESSAGE_HANDLER(ViewMsg_InstallMissingPlugin, OnInstallMissingPlugin) | 631 IPC_MESSAGE_HANDLER(ViewMsg_InstallMissingPlugin, OnInstallMissingPlugin) |
631 IPC_MESSAGE_HANDLER(ViewMsg_RunFileChooserResponse, OnFileChooserResponse) | 632 IPC_MESSAGE_HANDLER(ViewMsg_RunFileChooserResponse, OnFileChooserResponse) |
632 IPC_MESSAGE_HANDLER(ViewMsg_EnableViewSourceMode, OnEnableViewSourceMode) | 633 IPC_MESSAGE_HANDLER(ViewMsg_EnableViewSourceMode, OnEnableViewSourceMode) |
633 IPC_MESSAGE_HANDLER(ViewMsg_GetAllSavableResourceLinksForCurrentPage, | 634 IPC_MESSAGE_HANDLER(ViewMsg_GetAllSavableResourceLinksForCurrentPage, |
634 OnGetAllSavableResourceLinksForCurrentPage) | 635 OnGetAllSavableResourceLinksForCurrentPage) |
635 IPC_MESSAGE_HANDLER( | 636 IPC_MESSAGE_HANDLER( |
636 ViewMsg_GetSerializedHtmlDataForCurrentPageWithLocalLinks, | 637 ViewMsg_GetSerializedHtmlDataForCurrentPageWithLocalLinks, |
637 OnGetSerializedHtmlDataForCurrentPageWithLocalLinks) | 638 OnGetSerializedHtmlDataForCurrentPageWithLocalLinks) |
638 IPC_MESSAGE_HANDLER(ViewMsg_GetApplicationInfo, OnGetApplicationInfo) | 639 IPC_MESSAGE_HANDLER(ViewMsg_GetApplicationInfo, OnGetApplicationInfo) |
| 640 IPC_MESSAGE_HANDLER(ViewMsg_GetAccessibilityInfo, OnGetAccessibilityInfo) |
| 641 IPC_MESSAGE_HANDLER(ViewMsg_ClearAccessibilityInfo, |
| 642 OnClearAccessibilityInfo) |
639 IPC_MESSAGE_HANDLER(ViewMsg_ShouldClose, OnMsgShouldClose) | 643 IPC_MESSAGE_HANDLER(ViewMsg_ShouldClose, OnMsgShouldClose) |
640 IPC_MESSAGE_HANDLER(ViewMsg_ClosePage, OnClosePage) | 644 IPC_MESSAGE_HANDLER(ViewMsg_ClosePage, OnClosePage) |
641 IPC_MESSAGE_HANDLER(ViewMsg_ThemeChanged, OnThemeChanged) | 645 IPC_MESSAGE_HANDLER(ViewMsg_ThemeChanged, OnThemeChanged) |
642 IPC_MESSAGE_HANDLER(ViewMsg_HandleMessageFromExternalHost, | 646 IPC_MESSAGE_HANDLER(ViewMsg_HandleMessageFromExternalHost, |
643 OnMessageFromExternalHost) | 647 OnMessageFromExternalHost) |
644 IPC_MESSAGE_HANDLER(ViewMsg_DisassociateFromPopupCount, | 648 IPC_MESSAGE_HANDLER(ViewMsg_DisassociateFromPopupCount, |
645 OnDisassociateFromPopupCount) | 649 OnDisassociateFromPopupCount) |
646 IPC_MESSAGE_HANDLER(ViewMsg_AutoFillSuggestionsReturned, | 650 IPC_MESSAGE_HANDLER(ViewMsg_AutoFillSuggestionsReturned, |
647 OnAutoFillSuggestionsReturned) | 651 OnAutoFillSuggestionsReturned) |
648 IPC_MESSAGE_HANDLER(ViewMsg_AutoFillForms, OnAutoFillForms) | 652 IPC_MESSAGE_HANDLER(ViewMsg_AutoFillForms, OnAutoFillForms) |
(...skipping 25 matching lines...) Expand all Loading... |
674 IPC_MESSAGE_HANDLER(ViewMsg_WindowFrameChanged, OnWindowFrameChanged) | 678 IPC_MESSAGE_HANDLER(ViewMsg_WindowFrameChanged, OnWindowFrameChanged) |
675 #endif | 679 #endif |
676 IPC_MESSAGE_HANDLER(ViewMsg_SetEditCommandsForNextKeyEvent, | 680 IPC_MESSAGE_HANDLER(ViewMsg_SetEditCommandsForNextKeyEvent, |
677 OnSetEditCommandsForNextKeyEvent) | 681 OnSetEditCommandsForNextKeyEvent) |
678 IPC_MESSAGE_HANDLER(ViewMsg_ExecuteCode, | 682 IPC_MESSAGE_HANDLER(ViewMsg_ExecuteCode, |
679 OnExecuteCode) | 683 OnExecuteCode) |
680 IPC_MESSAGE_HANDLER(ViewMsg_CustomContextMenuAction, | 684 IPC_MESSAGE_HANDLER(ViewMsg_CustomContextMenuAction, |
681 OnCustomContextMenuAction) | 685 OnCustomContextMenuAction) |
682 IPC_MESSAGE_HANDLER(ViewMsg_TranslatePage, OnTranslatePage) | 686 IPC_MESSAGE_HANDLER(ViewMsg_TranslatePage, OnTranslatePage) |
683 IPC_MESSAGE_HANDLER(ViewMsg_RevertTranslation, OnRevertTranslation) | 687 IPC_MESSAGE_HANDLER(ViewMsg_RevertTranslation, OnRevertTranslation) |
684 IPC_MESSAGE_HANDLER(ViewMsg_GetAccessibilityTree, OnGetAccessibilityTree) | |
685 | 688 |
686 // Have the super handle all other messages. | 689 // Have the super handle all other messages. |
687 IPC_MESSAGE_UNHANDLED(RenderWidget::OnMessageReceived(message)) | 690 IPC_MESSAGE_UNHANDLED(RenderWidget::OnMessageReceived(message)) |
688 IPC_END_MESSAGE_MAP() | 691 IPC_END_MESSAGE_MAP() |
689 } | 692 } |
690 | 693 |
691 void RenderView::SendThumbnail() { | 694 void RenderView::SendThumbnail() { |
692 WebFrame* main_frame = webview()->mainFrame(); | 695 WebFrame* main_frame = webview()->mainFrame(); |
693 if (!main_frame) | 696 if (!main_frame) |
694 return; | 697 return; |
(...skipping 630 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1325 Send(new ViewHostMsg_FrameNavigate(routing_id_, params)); | 1328 Send(new ViewHostMsg_FrameNavigate(routing_id_, params)); |
1326 } | 1329 } |
1327 | 1330 |
1328 last_page_id_sent_to_browser_ = | 1331 last_page_id_sent_to_browser_ = |
1329 std::max(last_page_id_sent_to_browser_, page_id_); | 1332 std::max(last_page_id_sent_to_browser_, page_id_); |
1330 | 1333 |
1331 // If we end up reusing this WebRequest (for example, due to a #ref click), | 1334 // If we end up reusing this WebRequest (for example, due to a #ref click), |
1332 // we don't want the transition type to persist. Just clear it. | 1335 // we don't want the transition type to persist. Just clear it. |
1333 navigation_state->set_transition_type(PageTransition::LINK); | 1336 navigation_state->set_transition_type(PageTransition::LINK); |
1334 | 1337 |
| 1338 #if defined(OS_WIN) |
1335 if (accessibility_.get()) { | 1339 if (accessibility_.get()) { |
1336 accessibility_->clear(); | 1340 // Remove accessibility info cache. |
1337 accessibility_.reset(); | 1341 accessibility_.reset(); |
1338 } | 1342 } |
| 1343 #else |
| 1344 // TODO(port): accessibility not yet implemented. See http://crbug.com/8288. |
| 1345 #endif |
1339 } | 1346 } |
1340 | 1347 |
1341 // Tell the embedding application that the title of the active page has changed | 1348 // Tell the embedding application that the title of the active page has changed |
1342 void RenderView::UpdateTitle(WebFrame* frame, const string16& title) { | 1349 void RenderView::UpdateTitle(WebFrame* frame, const string16& title) { |
1343 // Ignore all but top level navigations... | 1350 // Ignore all but top level navigations... |
1344 if (!frame->parent()) { | 1351 if (!frame->parent()) { |
1345 Send(new ViewHostMsg_UpdateTitle( | 1352 Send(new ViewHostMsg_UpdateTitle( |
1346 routing_id_, | 1353 routing_id_, |
1347 page_id_, | 1354 page_id_, |
1348 UTF16ToWideHack(title.length() > chrome::kMaxTitleChars ? | 1355 UTF16ToWideHack(title.length() > chrome::kMaxTitleChars ? |
(...skipping 2566 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3915 ExtensionProcessBindings::SetViewType(webview(), type); | 3922 ExtensionProcessBindings::SetViewType(webview(), type); |
3916 } | 3923 } |
3917 } | 3924 } |
3918 view_type_ = type; | 3925 view_type_ = type; |
3919 } | 3926 } |
3920 | 3927 |
3921 void RenderView::OnUpdateBrowserWindowId(int window_id) { | 3928 void RenderView::OnUpdateBrowserWindowId(int window_id) { |
3922 browser_window_id_ = window_id; | 3929 browser_window_id_ = window_id; |
3923 } | 3930 } |
3924 | 3931 |
3925 void RenderView::OnGetAccessibilityTree() { | 3932 void RenderView::OnGetAccessibilityInfo( |
3926 if (accessibility_.get()) { | 3933 const webkit_glue::WebAccessibility::InParams& in_params, |
| 3934 webkit_glue::WebAccessibility::OutParams* out_params) { |
| 3935 #if defined(OS_WIN) |
| 3936 if (!accessibility_.get()) { |
| 3937 // TODO(dglazkov): Once implemented for all ports, remove lazy |
| 3938 // instantiation of accessibility_. |
| 3939 accessibility_.reset(WebAccessibilityCache::create()); |
| 3940 accessibility_->initialize(webview()); |
| 3941 } |
| 3942 |
| 3943 out_params->return_code = |
| 3944 webkit_glue::WebAccessibility::GetAccObjInfo(accessibility_.get(), |
| 3945 in_params, |
| 3946 out_params); |
| 3947 |
| 3948 #else // defined(OS_WIN) |
| 3949 // TODO(port): accessibility not yet implemented |
| 3950 NOTIMPLEMENTED(); |
| 3951 #endif |
| 3952 } |
| 3953 |
| 3954 void RenderView::OnClearAccessibilityInfo(int acc_obj_id, bool clear_all) { |
| 3955 #if defined(OS_WIN) |
| 3956 if (!accessibility_.get()) { |
| 3957 // If accessibility is not activated, ignore clearing message. |
| 3958 return; |
| 3959 } |
| 3960 |
| 3961 if (clear_all) { |
3927 accessibility_->clear(); | 3962 accessibility_->clear(); |
| 3963 return; |
3928 } | 3964 } |
3929 accessibility_.reset(WebAccessibilityCache::create()); | |
3930 accessibility_->initialize(webview()); | |
3931 | 3965 |
3932 WebAccessibilityObject src_tree = webview()->accessibilityObject(); | 3966 accessibility_->remove(acc_obj_id); |
3933 webkit_glue::WebAccessibility dst_tree(src_tree, accessibility_.get()); | 3967 |
3934 Send(new ViewHostMsg_AccessibilityTree(routing_id_, dst_tree)); | 3968 #else // defined(OS_WIN) |
| 3969 // TODO(port): accessibility not yet implemented |
| 3970 NOTIMPLEMENTED(); |
| 3971 #endif |
3935 } | 3972 } |
3936 | 3973 |
3937 void RenderView::OnGetAllSavableResourceLinksForCurrentPage( | 3974 void RenderView::OnGetAllSavableResourceLinksForCurrentPage( |
3938 const GURL& page_url) { | 3975 const GURL& page_url) { |
3939 // Prepare list to storage all savable resource links. | 3976 // Prepare list to storage all savable resource links. |
3940 std::vector<GURL> resources_list; | 3977 std::vector<GURL> resources_list; |
3941 std::vector<GURL> referrers_list; | 3978 std::vector<GURL> referrers_list; |
3942 std::vector<GURL> frames_list; | 3979 std::vector<GURL> frames_list; |
3943 webkit_glue::SavableResourcesResult result(&resources_list, | 3980 webkit_glue::SavableResourcesResult result(&resources_list, |
3944 &referrers_list, | 3981 &referrers_list, |
(...skipping 1004 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4949 | 4986 |
4950 if (last_top_level_navigation_page_id_ != page_id_ && | 4987 if (last_top_level_navigation_page_id_ != page_id_ && |
4951 // Not interested in reloads. | 4988 // Not interested in reloads. |
4952 type != WebKit::WebNavigationTypeReload && | 4989 type != WebKit::WebNavigationTypeReload && |
4953 type != WebKit::WebNavigationTypeFormSubmitted) { | 4990 type != WebKit::WebNavigationTypeFormSubmitted) { |
4954 return true; | 4991 return true; |
4955 } | 4992 } |
4956 } | 4993 } |
4957 return false; | 4994 return false; |
4958 } | 4995 } |
OLD | NEW |