| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 #if defined(ENABLE_PEPPER) | 5 #if defined(ENABLE_PEPPER) |
| 6 #define PEPPER_APIS_ENABLED | 6 #define PEPPER_APIS_ENABLED |
| 7 #endif | 7 #endif |
| 8 | 8 |
| 9 #include "chrome/renderer/render_view.h" | 9 #include "chrome/renderer/render_view.h" |
| 10 | 10 |
| (...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 429 IPC_MESSAGE_HANDLER(ViewMsg_AdvanceToNextMisspelling, | 429 IPC_MESSAGE_HANDLER(ViewMsg_AdvanceToNextMisspelling, |
| 430 OnAdvanceToNextMisspelling) | 430 OnAdvanceToNextMisspelling) |
| 431 IPC_MESSAGE_HANDLER(ViewMsg_ToggleSpellCheck, OnToggleSpellCheck) | 431 IPC_MESSAGE_HANDLER(ViewMsg_ToggleSpellCheck, OnToggleSpellCheck) |
| 432 IPC_MESSAGE_HANDLER(ViewMsg_Delete, OnDelete) | 432 IPC_MESSAGE_HANDLER(ViewMsg_Delete, OnDelete) |
| 433 IPC_MESSAGE_HANDLER(ViewMsg_SelectAll, OnSelectAll) | 433 IPC_MESSAGE_HANDLER(ViewMsg_SelectAll, OnSelectAll) |
| 434 IPC_MESSAGE_HANDLER(ViewMsg_CopyImageAt, OnCopyImageAt) | 434 IPC_MESSAGE_HANDLER(ViewMsg_CopyImageAt, OnCopyImageAt) |
| 435 IPC_MESSAGE_HANDLER(ViewMsg_ExecuteEditCommand, OnExecuteEditCommand) | 435 IPC_MESSAGE_HANDLER(ViewMsg_ExecuteEditCommand, OnExecuteEditCommand) |
| 436 IPC_MESSAGE_HANDLER(ViewMsg_Find, OnFind) | 436 IPC_MESSAGE_HANDLER(ViewMsg_Find, OnFind) |
| 437 IPC_MESSAGE_HANDLER(ViewMsg_DeterminePageText, OnDeterminePageText) | 437 IPC_MESSAGE_HANDLER(ViewMsg_DeterminePageText, OnDeterminePageText) |
| 438 IPC_MESSAGE_HANDLER(ViewMsg_Zoom, OnZoom) | 438 IPC_MESSAGE_HANDLER(ViewMsg_Zoom, OnZoom) |
| 439 IPC_MESSAGE_HANDLER(ViewMsg_SetZoomLevelForLoadingHost, |
| 440 OnSetZoomLevelForLoadingHost) |
| 439 IPC_MESSAGE_HANDLER(ViewMsg_SetPageEncoding, OnSetPageEncoding) | 441 IPC_MESSAGE_HANDLER(ViewMsg_SetPageEncoding, OnSetPageEncoding) |
| 440 IPC_MESSAGE_HANDLER(ViewMsg_ResetPageEncodingToDefault, | 442 IPC_MESSAGE_HANDLER(ViewMsg_ResetPageEncodingToDefault, |
| 441 OnResetPageEncodingToDefault) | 443 OnResetPageEncodingToDefault) |
| 442 IPC_MESSAGE_HANDLER(ViewMsg_SetupDevToolsClient, OnSetupDevToolsClient) | 444 IPC_MESSAGE_HANDLER(ViewMsg_SetupDevToolsClient, OnSetupDevToolsClient) |
| 443 IPC_MESSAGE_HANDLER(ViewMsg_DownloadFavIcon, OnDownloadFavIcon) | 445 IPC_MESSAGE_HANDLER(ViewMsg_DownloadFavIcon, OnDownloadFavIcon) |
| 444 IPC_MESSAGE_HANDLER(ViewMsg_ScriptEvalRequest, OnScriptEvalRequest) | 446 IPC_MESSAGE_HANDLER(ViewMsg_ScriptEvalRequest, OnScriptEvalRequest) |
| 445 IPC_MESSAGE_HANDLER(ViewMsg_CSSInsertRequest, OnCSSInsertRequest) | 447 IPC_MESSAGE_HANDLER(ViewMsg_CSSInsertRequest, OnCSSInsertRequest) |
| 446 IPC_MESSAGE_HANDLER(ViewMsg_AddMessageToConsole, OnAddMessageToConsole) | 448 IPC_MESSAGE_HANDLER(ViewMsg_AddMessageToConsole, OnAddMessageToConsole) |
| 447 IPC_MESSAGE_HANDLER(ViewMsg_ReservePageIDRange, OnReservePageIDRange) | 449 IPC_MESSAGE_HANDLER(ViewMsg_ReservePageIDRange, OnReservePageIDRange) |
| 448 IPC_MESSAGE_HANDLER(ViewMsg_FormFill, OnFormFill) | 450 IPC_MESSAGE_HANDLER(ViewMsg_FormFill, OnFormFill) |
| (...skipping 587 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1036 navigation_state->password_form_data(); | 1038 navigation_state->password_form_data(); |
| 1037 if (password_form_data) | 1039 if (password_form_data) |
| 1038 params.password_form = *password_form_data; | 1040 params.password_form = *password_form_data; |
| 1039 | 1041 |
| 1040 params.gesture = navigation_gesture_; | 1042 params.gesture = navigation_gesture_; |
| 1041 navigation_gesture_ = NavigationGestureUnknown; | 1043 navigation_gesture_ = NavigationGestureUnknown; |
| 1042 | 1044 |
| 1043 if (!frame->parent()) { | 1045 if (!frame->parent()) { |
| 1044 // Top-level navigation. | 1046 // Top-level navigation. |
| 1045 | 1047 |
| 1048 // Set zoom level. |
| 1049 HostZoomLevels::iterator host = |
| 1050 host_zoom_levels_.find(GURL(request.url()).host()); |
| 1051 if (host != host_zoom_levels_.end()) { |
| 1052 webview()->setZoomLevel(false, host->second); |
| 1053 // This zoom level was merely recorded transiently for this load. We can |
| 1054 // erase it now. If at some point we reload this page, the browser will |
| 1055 // send us a new, up-to-date zoom level. |
| 1056 host_zoom_levels_.erase(host); |
| 1057 } |
| 1058 |
| 1046 // Update contents MIME type for main frame. | 1059 // Update contents MIME type for main frame. |
| 1047 params.contents_mime_type = ds->response().mimeType().utf8(); | 1060 params.contents_mime_type = ds->response().mimeType().utf8(); |
| 1048 | 1061 |
| 1049 params.transition = navigation_state->transition_type(); | 1062 params.transition = navigation_state->transition_type(); |
| 1050 if (!PageTransition::IsMainFrame(params.transition)) { | 1063 if (!PageTransition::IsMainFrame(params.transition)) { |
| 1051 // If the main frame does a load, it should not be reported as a subframe | 1064 // If the main frame does a load, it should not be reported as a subframe |
| 1052 // navigation. This can occur in the following case: | 1065 // navigation. This can occur in the following case: |
| 1053 // 1. You're on a site with frames. | 1066 // 1. You're on a site with frames. |
| 1054 // 2. You do a subframe navigation. This is stored with transition type | 1067 // 2. You do a subframe navigation. This is stored with transition type |
| 1055 // MANUAL_SUBFRAME. | 1068 // MANUAL_SUBFRAME. |
| (...skipping 1069 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2125 // Received a redirect on the main frame. | 2138 // Received a redirect on the main frame. |
| 2126 WebDataSource* data_source = frame->provisionalDataSource(); | 2139 WebDataSource* data_source = frame->provisionalDataSource(); |
| 2127 if (!data_source) { | 2140 if (!data_source) { |
| 2128 // Should only be invoked when we have a data source. | 2141 // Should only be invoked when we have a data source. |
| 2129 NOTREACHED(); | 2142 NOTREACHED(); |
| 2130 return; | 2143 return; |
| 2131 } | 2144 } |
| 2132 std::vector<GURL> redirects; | 2145 std::vector<GURL> redirects; |
| 2133 GetRedirectChain(data_source, &redirects); | 2146 GetRedirectChain(data_source, &redirects); |
| 2134 if (redirects.size() >= 2) { | 2147 if (redirects.size() >= 2) { |
| 2135 Send(new ViewHostMsg_DidRedirectProvisionalLoad( | 2148 Send(new ViewHostMsg_DidRedirectProvisionalLoad(routing_id_, page_id_, |
| 2136 routing_id_, page_id_, redirects[redirects.size() - 2], | 2149 redirects[redirects.size() - 2], redirects.back())); |
| 2137 redirects[redirects.size() - 1])); | |
| 2138 } | 2150 } |
| 2139 } | 2151 } |
| 2140 | 2152 |
| 2141 void RenderView::didFailProvisionalLoad( | 2153 void RenderView::didFailProvisionalLoad(WebFrame* frame, |
| 2142 WebFrame* frame, const WebURLError& error) { | 2154 const WebURLError& error) { |
| 2143 // Notify the browser that we failed a provisional load with an error. | 2155 // Notify the browser that we failed a provisional load with an error. |
| 2144 // | 2156 // |
| 2145 // Note: It is important this notification occur before DidStopLoading so the | 2157 // Note: It is important this notification occur before DidStopLoading so the |
| 2146 // SSL manager can react to the provisional load failure before being | 2158 // SSL manager can react to the provisional load failure before being |
| 2147 // notified the load stopped. | 2159 // notified the load stopped. |
| 2148 // | 2160 // |
| 2149 WebDataSource* ds = frame->provisionalDataSource(); | 2161 WebDataSource* ds = frame->provisionalDataSource(); |
| 2150 DCHECK(ds); | 2162 DCHECK(ds); |
| 2151 | 2163 |
| 2152 const WebURLRequest& failed_request = ds->request(); | 2164 const WebURLRequest& failed_request = ds->request(); |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2213 // grows too large, then we'll just let it through. | 2225 // grows too large, then we'll just let it through. |
| 2214 navigation_state->append_postponed_data(data, data_len); | 2226 navigation_state->append_postponed_data(data, data_len); |
| 2215 if (navigation_state->postponed_data().size() >= 512) { | 2227 if (navigation_state->postponed_data().size() >= 512) { |
| 2216 navigation_state->set_postpone_loading_data(false); | 2228 navigation_state->set_postpone_loading_data(false); |
| 2217 frame->commitDocumentData(navigation_state->postponed_data().data(), | 2229 frame->commitDocumentData(navigation_state->postponed_data().data(), |
| 2218 navigation_state->postponed_data().size()); | 2230 navigation_state->postponed_data().size()); |
| 2219 navigation_state->clear_postponed_data(); | 2231 navigation_state->clear_postponed_data(); |
| 2220 } | 2232 } |
| 2221 } | 2233 } |
| 2222 | 2234 |
| 2223 void RenderView::didCommitProvisionalLoad( | 2235 void RenderView::didCommitProvisionalLoad(WebFrame* frame, |
| 2224 WebFrame* frame, bool is_new_navigation) { | 2236 bool is_new_navigation) { |
| 2225 NavigationState* navigation_state = | 2237 NavigationState* navigation_state = |
| 2226 NavigationState::FromDataSource(frame->dataSource()); | 2238 NavigationState::FromDataSource(frame->dataSource()); |
| 2227 | 2239 |
| 2228 navigation_state->set_commit_load_time(Time::Now()); | 2240 navigation_state->set_commit_load_time(Time::Now()); |
| 2229 if (is_new_navigation) { | 2241 if (is_new_navigation) { |
| 2230 // When we perform a new navigation, we need to update the previous session | 2242 // When we perform a new navigation, we need to update the previous session |
| 2231 // history entry with state for the page we are leaving. | 2243 // history entry with state for the page we are leaving. |
| 2232 UpdateSessionHistory(frame); | 2244 UpdateSessionHistory(frame); |
| 2233 | 2245 |
| 2234 // We bump our Page ID to correspond with the new session history entry. | 2246 // We bump our Page ID to correspond with the new session history entry. |
| (...skipping 721 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2956 | 2968 |
| 2957 // We set |determine_page_text_after_loading_stops_| true here so that, | 2969 // We set |determine_page_text_after_loading_stops_| true here so that, |
| 2958 // after page has been loaded completely, the text in the page is captured. | 2970 // after page has been loaded completely, the text in the page is captured. |
| 2959 determine_page_text_after_loading_stops_ = true; | 2971 determine_page_text_after_loading_stops_ = true; |
| 2960 } | 2972 } |
| 2961 | 2973 |
| 2962 void RenderView::DnsPrefetch(const std::vector<std::string>& host_names) { | 2974 void RenderView::DnsPrefetch(const std::vector<std::string>& host_names) { |
| 2963 Send(new ViewHostMsg_DnsPrefetch(host_names)); | 2975 Send(new ViewHostMsg_DnsPrefetch(host_names)); |
| 2964 } | 2976 } |
| 2965 | 2977 |
| 2966 void RenderView::OnZoom(int function) { | 2978 void RenderView::OnZoom(PageZoom::Function function) { |
| 2967 static const bool kZoomIsTextOnly = false; | 2979 if (!webview()) // Not sure if this can happen, but no harm in being safe. |
| 2968 switch (function) { | 2980 return; |
| 2969 case PageZoom::SMALLER: | 2981 |
| 2970 webview()->zoomOut(kZoomIsTextOnly); | 2982 int zoom_level = webview()->zoomLevel(); |
| 2971 break; | 2983 int new_zoom_level = webview()->setZoomLevel(false, |
| 2972 case PageZoom::STANDARD: | 2984 (function == PageZoom::RESET) ? 0 : (zoom_level + function)); |
| 2973 webview()->zoomDefault(); | 2985 |
| 2974 break; | 2986 // Tell the browser which host got zoomed so it can update the saved values. |
| 2975 case PageZoom::LARGER: | 2987 // Pages like the safe browsing interstitial can have empty hosts; don't |
| 2976 webview()->zoomIn(kZoomIsTextOnly); | 2988 // record those. |
| 2977 break; | 2989 std::string host(GURL(webview()->mainFrame()->url()).host()); |
| 2978 default: | 2990 if (!host.empty()) |
| 2979 NOTREACHED(); | 2991 Send(new ViewHostMsg_DidZoomHost(host, new_zoom_level)); |
| 2980 } | 2992 } |
| 2993 |
| 2994 void RenderView::OnSetZoomLevelForLoadingHost(std::string host, |
| 2995 int zoom_level) { |
| 2996 host_zoom_levels_[host] = zoom_level; |
| 2981 } | 2997 } |
| 2982 | 2998 |
| 2983 void RenderView::OnSetPageEncoding(const std::string& encoding_name) { | 2999 void RenderView::OnSetPageEncoding(const std::string& encoding_name) { |
| 2984 webview()->setPageEncoding(WebString::fromUTF8(encoding_name)); | 3000 webview()->setPageEncoding(WebString::fromUTF8(encoding_name)); |
| 2985 } | 3001 } |
| 2986 | 3002 |
| 2987 void RenderView::OnResetPageEncodingToDefault() { | 3003 void RenderView::OnResetPageEncodingToDefault() { |
| 2988 WebString no_encoding; | 3004 WebString no_encoding; |
| 2989 webview()->setPageEncoding(no_encoding); | 3005 webview()->setPageEncoding(no_encoding); |
| 2990 } | 3006 } |
| (...skipping 871 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3862 new PluginMsg_SignalModalDialogEvent(host_window_)); | 3878 new PluginMsg_SignalModalDialogEvent(host_window_)); |
| 3863 | 3879 |
| 3864 message->EnableMessagePumping(); // Runs a nested message loop. | 3880 message->EnableMessagePumping(); // Runs a nested message loop. |
| 3865 bool rv = Send(message); | 3881 bool rv = Send(message); |
| 3866 | 3882 |
| 3867 PluginChannelHost::Broadcast( | 3883 PluginChannelHost::Broadcast( |
| 3868 new PluginMsg_ResetModalDialogEvent(host_window_)); | 3884 new PluginMsg_ResetModalDialogEvent(host_window_)); |
| 3869 | 3885 |
| 3870 return rv; | 3886 return rv; |
| 3871 } | 3887 } |
| OLD | NEW |