Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1076)

Side by Side Diff: chrome/renderer/render_view.cc

Issue 62032: Stop serializing WebString over IPC. The new rule is that only POD (plain ol... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 11 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/renderer/render_view.h ('k') | webkit/build/WebKit/WebKit.vcproj » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 2113 matching lines...) Expand 10 before | Expand all | Expand 10 after
2124 NOTREACHED() << "unknown ErrorPageType"; 2124 NOTREACHED() << "unknown ErrorPageType";
2125 } 2125 }
2126 2126
2127 // OK, build the final url to return. 2127 // OK, build the final url to return.
2128 GURL::Replacements link_doctor_params; 2128 GURL::Replacements link_doctor_params;
2129 link_doctor_params.SetQueryStr(params); 2129 link_doctor_params.SetQueryStr(params);
2130 GURL url = alternate_error_page_url_.ReplaceComponents(link_doctor_params); 2130 GURL url = alternate_error_page_url_.ReplaceComponents(link_doctor_params);
2131 return url; 2131 return url;
2132 } 2132 }
2133 2133
2134 void RenderView::OnFind(const WebKit::WebFindInPageRequest& request) { 2134 void RenderView::OnFind(int request_id,
2135 const string16& search_text,
2136 const WebKit::WebFindOptions& options) {
2135 WebFrame* main_frame = webview()->GetMainFrame(); 2137 WebFrame* main_frame = webview()->GetMainFrame();
2136 WebFrame* frame_after_main = webview()->GetNextFrameAfter(main_frame, true); 2138 WebFrame* frame_after_main = webview()->GetNextFrameAfter(main_frame, true);
2137 WebFrame* focused_frame = webview()->GetFocusedFrame(); 2139 WebFrame* focused_frame = webview()->GetFocusedFrame();
2138 WebFrame* search_frame = focused_frame; // start searching focused frame. 2140 WebFrame* search_frame = focused_frame; // start searching focused frame.
2139 2141
2140 bool multi_frame = (frame_after_main != main_frame); 2142 bool multi_frame = (frame_after_main != main_frame);
2141 2143
2142 // If we have multiple frames, we don't want to wrap the search within the 2144 // If we have multiple frames, we don't want to wrap the search within the
2143 // frame, so we check here if we only have main_frame in the chain. 2145 // frame, so we check here if we only have main_frame in the chain.
2144 bool wrap_within_frame = !multi_frame; 2146 bool wrap_within_frame = !multi_frame;
2145 2147
2146 gfx::Rect selection_rect; 2148 gfx::Rect selection_rect;
2147 bool result = false; 2149 bool result = false;
2148 2150
2149 do { 2151 do {
2150 result = search_frame->Find(request, wrap_within_frame, &selection_rect); 2152 result = search_frame->Find(
2153 request_id, search_text, options, wrap_within_frame, &selection_rect);
2151 2154
2152 if (!result) { 2155 if (!result) {
2153 // don't leave text selected as you move to the next frame. 2156 // don't leave text selected as you move to the next frame.
2154 search_frame->ClearSelection(); 2157 search_frame->ClearSelection();
2155 2158
2156 // Find the next frame, but skip the invisible ones. 2159 // Find the next frame, but skip the invisible ones.
2157 do { 2160 do {
2158 // What is the next frame to search? (we might be going backwards). Note 2161 // What is the next frame to search? (we might be going backwards). Note
2159 // that we specify wrap=true so that search_frame never becomes NULL. 2162 // that we specify wrap=true so that search_frame never becomes NULL.
2160 search_frame = request.forward ? 2163 search_frame = options.forward ?
2161 webview()->GetNextFrameAfter(search_frame, true) : 2164 webview()->GetNextFrameAfter(search_frame, true) :
2162 webview()->GetPreviousFrameBefore(search_frame, true); 2165 webview()->GetPreviousFrameBefore(search_frame, true);
2163 } while (!search_frame->Visible() && search_frame != focused_frame); 2166 } while (!search_frame->Visible() && search_frame != focused_frame);
2164 2167
2165 // Make sure selection doesn't affect the search operation in new frame. 2168 // Make sure selection doesn't affect the search operation in new frame.
2166 search_frame->ClearSelection(); 2169 search_frame->ClearSelection();
2167 2170
2168 // If we have multiple frames and we have wrapped back around to the 2171 // If we have multiple frames and we have wrapped back around to the
2169 // focused frame, we need to search it once more allowing wrap within 2172 // focused frame, we need to search it once more allowing wrap within
2170 // the frame, otherwise it will report 'no match' if the focused frame has 2173 // the frame, otherwise it will report 'no match' if the focused frame has
2171 // reported matches, but no frames after the focused_frame contain a 2174 // reported matches, but no frames after the focused_frame contain a
2172 // match for the search word(s). 2175 // match for the search word(s).
2173 if (multi_frame && search_frame == focused_frame) { 2176 if (multi_frame && search_frame == focused_frame) {
2174 result = search_frame->Find(request, true, // Force wrapping. 2177 result = search_frame->Find(
2175 &selection_rect); 2178 request_id, search_text, options, true, // Force wrapping.
2179 &selection_rect);
2176 } 2180 }
2177 } 2181 }
2178 2182
2179 // TODO(jcampan): http://b/issue?id=1157486 Remove StoreForFocus call once 2183 // TODO(jcampan): http://b/issue?id=1157486 Remove StoreForFocus call once
2180 // we have the fix for 792423. 2184 // we have the fix for 792423.
2181 search_frame->GetView()->StoreFocusForFrame(search_frame); 2185 search_frame->GetView()->StoreFocusForFrame(search_frame);
2182 webview()->SetFocusedFrame(search_frame); 2186 webview()->SetFocusedFrame(search_frame);
2183 } while (!result && search_frame != focused_frame); 2187 } while (!result && search_frame != focused_frame);
2184 2188
2185 // Make sure we don't leave any frame focused or the focus won't be restored 2189 // Make sure we don't leave any frame focused or the focus won't be restored
2186 // properly in WebViewImpl::SetFocus(). Note that we are talking here about 2190 // properly in WebViewImpl::SetFocus(). Note that we are talking here about
2187 // focused on the SelectionController, not FocusController. 2191 // focused on the SelectionController, not FocusController.
2188 // webview()->GetFocusedFrame() will still return the last focused frame (as 2192 // webview()->GetFocusedFrame() will still return the last focused frame (as
2189 // it queries the FocusController). 2193 // it queries the FocusController).
2190 // TODO(jcampan): http://b/issue?id=1157486 Remove next line once we have the 2194 // TODO(jcampan): http://b/issue?id=1157486 Remove next line once we have the
2191 // fix for 792423. 2195 // fix for 792423.
2192 webview()->SetFocusedFrame(NULL); 2196 webview()->SetFocusedFrame(NULL);
2193 2197
2194 if (request.findNext) { 2198 if (options.findNext) {
2195 // Force the main_frame to report the actual count. 2199 // Force the main_frame to report the actual count.
2196 main_frame->IncreaseMatchCount(0, request.identifier); 2200 main_frame->IncreaseMatchCount(0, request_id);
2197 } else { 2201 } else {
2198 // If nothing is found, set result to "0 of 0", otherwise, set it to 2202 // If nothing is found, set result to "0 of 0", otherwise, set it to
2199 // "-1 of 1" to indicate that we found at least one item, but we don't know 2203 // "-1 of 1" to indicate that we found at least one item, but we don't know
2200 // yet what is active. 2204 // yet what is active.
2201 int ordinal = result ? -1 : 0; // -1 here means, we might know more later. 2205 int ordinal = result ? -1 : 0; // -1 here means, we might know more later.
2202 int match_count = result ? 1 : 0; // 1 here means possibly more coming. 2206 int match_count = result ? 1 : 0; // 1 here means possibly more coming.
2203 2207
2204 // If we find no matches then this will be our last status update. 2208 // If we find no matches then this will be our last status update.
2205 // Otherwise the scoping effort will send more results. 2209 // Otherwise the scoping effort will send more results.
2206 bool final_status_update = !result; 2210 bool final_status_update = !result;
2207 2211
2208 // Send the search result over to the browser process. 2212 // Send the search result over to the browser process.
2209 Send(new ViewHostMsg_Find_Reply(routing_id_, 2213 Send(new ViewHostMsg_Find_Reply(routing_id_,
2210 request.identifier, 2214 request_id,
2211 match_count, 2215 match_count,
2212 selection_rect, 2216 selection_rect,
2213 ordinal, 2217 ordinal,
2214 final_status_update)); 2218 final_status_update));
2215 2219
2216 // Scoping effort begins, starting with the mainframe. 2220 // Scoping effort begins, starting with the mainframe.
2217 search_frame = main_frame; 2221 search_frame = main_frame;
2218 2222
2219 main_frame->ResetMatchCount(); 2223 main_frame->ResetMatchCount();
2220 2224
2221 do { 2225 do {
2222 // Cancel all old scoping requests before starting a new one. 2226 // Cancel all old scoping requests before starting a new one.
2223 search_frame->CancelPendingScopingEffort(); 2227 search_frame->CancelPendingScopingEffort();
2224 2228
2225 // We don't start another scoping effort unless at least one match has 2229 // We don't start another scoping effort unless at least one match has
2226 // been found. 2230 // been found.
2227 if (result) { 2231 if (result) {
2228 // Start new scoping request. If the scoping function determines that it 2232 // Start new scoping request. If the scoping function determines that it
2229 // needs to scope, it will defer until later. 2233 // needs to scope, it will defer until later.
2230 search_frame->ScopeStringMatches(request, 2234 search_frame->ScopeStringMatches(request_id,
2235 search_text,
2236 options,
2231 true); // reset the tickmarks 2237 true); // reset the tickmarks
2232 } 2238 }
2233 2239
2234 // Iterate to the next frame. The frame will not necessarily scope, for 2240 // Iterate to the next frame. The frame will not necessarily scope, for
2235 // example if it is not visible. 2241 // example if it is not visible.
2236 search_frame = webview()->GetNextFrameAfter(search_frame, true); 2242 search_frame = webview()->GetNextFrameAfter(search_frame, true);
2237 } while (search_frame != main_frame); 2243 } while (search_frame != main_frame);
2238 } 2244 }
2239 } 2245 }
2240 2246
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
2517 void RenderView::OnScriptEvalRequest(const std::wstring& frame_xpath, 2523 void RenderView::OnScriptEvalRequest(const std::wstring& frame_xpath,
2518 const std::wstring& jscript) { 2524 const std::wstring& jscript) {
2519 EvaluateScript(frame_xpath, jscript); 2525 EvaluateScript(frame_xpath, jscript);
2520 } 2526 }
2521 2527
2522 void RenderView::OnCSSInsertRequest(const std::wstring& frame_xpath, 2528 void RenderView::OnCSSInsertRequest(const std::wstring& frame_xpath,
2523 const std::string& css) { 2529 const std::string& css) {
2524 InsertCSS(frame_xpath, css); 2530 InsertCSS(frame_xpath, css);
2525 } 2531 }
2526 2532
2527 void RenderView::OnAddMessageToConsole(const std::wstring& frame_xpath, 2533 void RenderView::OnAddMessageToConsole(
2528 const WebConsoleMessage& message) { 2534 const string16& frame_xpath,
2529 WebFrame* web_frame = GetChildFrame(frame_xpath); 2535 const string16& message,
2536 const WebConsoleMessage::Level& level) {
2537 WebFrame* web_frame = GetChildFrame(UTF16ToWideHack(frame_xpath));
2530 if (web_frame) 2538 if (web_frame)
2531 web_frame->AddMessageToConsole(message); 2539 web_frame->AddMessageToConsole(WebConsoleMessage(level, message));
2532 } 2540 }
2533 2541
2534 #if defined(OS_WIN) 2542 #if defined(OS_WIN)
2535 void RenderView::OnDebugAttach() { 2543 void RenderView::OnDebugAttach() {
2536 Send(new ViewHostMsg_DidDebugAttach(routing_id_)); 2544 Send(new ViewHostMsg_DidDebugAttach(routing_id_));
2537 // Tell the plugin host to stop accepting messages in order to avoid 2545 // Tell the plugin host to stop accepting messages in order to avoid
2538 // hangs while the renderer is paused. 2546 // hangs while the renderer is paused.
2539 // TODO(1243929): It might be an improvement to add more plumbing to do this 2547 // TODO(1243929): It might be an improvement to add more plumbing to do this
2540 // when the renderer is actually paused vs. just the debugger being attached. 2548 // when the renderer is actually paused vs. just the debugger being attached.
2541 PluginChannelHost::SetListening(false); 2549 PluginChannelHost::SetListening(false);
(...skipping 586 matching lines...) Expand 10 before | Expand all | Expand 10 after
3128 "Renderer.Other.StartToFinishDoc", start_to_finish_doc); 3136 "Renderer.Other.StartToFinishDoc", start_to_finish_doc);
3129 UMA_HISTOGRAM_TIMES( 3137 UMA_HISTOGRAM_TIMES(
3130 "Renderer.Other.FinishDocToFinish", finish_doc_to_finish); 3138 "Renderer.Other.FinishDocToFinish", finish_doc_to_finish);
3131 UMA_HISTOGRAM_TIMES( 3139 UMA_HISTOGRAM_TIMES(
3132 "Renderer.Other.RequestToFinish", request_to_finish); 3140 "Renderer.Other.RequestToFinish", request_to_finish);
3133 UMA_HISTOGRAM_TIMES( 3141 UMA_HISTOGRAM_TIMES(
3134 "Renderer.Other.StartToFinish", start_to_finish); 3142 "Renderer.Other.StartToFinish", start_to_finish);
3135 break; 3143 break;
3136 } 3144 }
3137 } 3145 }
OLDNEW
« no previous file with comments | « chrome/renderer/render_view.h ('k') | webkit/build/WebKit/WebKit.vcproj » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698