diff options
author | jcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-17 20:17:00 +0000 |
---|---|---|
committer | jcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-17 20:17:00 +0000 |
commit | f345876ca7aac5ff6f4e08242891b800c48cedcd (patch) | |
tree | d8096238c5a3acad0f08a69f45744d5c843875f5 /chrome/renderer | |
parent | f7b7ffe4267e517b99c24391a51622f29c0476f0 (diff) | |
download | chromium_src-f345876ca7aac5ff6f4e08242891b800c48cedcd.zip chromium_src-f345876ca7aac5ff6f4e08242891b800c48cedcd.tar.gz chromium_src-f345876ca7aac5ff6f4e08242891b800c48cedcd.tar.bz2 |
Reverting the CLD CL altogether, the reliability bot is still red.
BUG=30681
TEST=None
TBR=brettw
Review URL: http://codereview.chromium.org/504048
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@34867 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r-- | chrome/renderer/render_view.cc | 43 | ||||
-rw-r--r-- | chrome/renderer/render_view.h | 3 |
2 files changed, 41 insertions, 5 deletions
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc index c27fb1c..baac373 100644 --- a/chrome/renderer/render_view.cc +++ b/chrome/renderer/render_view.cc @@ -245,6 +245,7 @@ RenderView::RenderView(RenderThreadBase* render_thread, send_preferred_size_changes_(false), ALLOW_THIS_IN_INITIALIZER_LIST( notification_provider_(new NotificationProvider(this))), + determine_page_text_after_loading_stops_(false), view_type_(ViewType::INVALID), browser_window_id_(-1), last_top_level_navigation_page_id_(-1), @@ -429,6 +430,7 @@ void RenderView::OnMessageReceived(const IPC::Message& message) { IPC_MESSAGE_HANDLER(ViewMsg_CopyImageAt, OnCopyImageAt) IPC_MESSAGE_HANDLER(ViewMsg_ExecuteEditCommand, OnExecuteEditCommand) IPC_MESSAGE_HANDLER(ViewMsg_Find, OnFind) + IPC_MESSAGE_HANDLER(ViewMsg_DeterminePageText, OnDeterminePageText) IPC_MESSAGE_HANDLER(ViewMsg_Zoom, OnZoom) IPC_MESSAGE_HANDLER(ViewMsg_SetZoomLevelForLoadingHost, OnSetZoomLevelForLoadingHost) @@ -580,18 +582,23 @@ void RenderView::CapturePageInfo(int load_id, bool preliminary_capture) { if (!preliminary_capture) last_indexed_page_id_ = load_id; - // Get the URL for this page. + // get the URL for this page GURL url(main_frame->url()); if (url.is_empty()) return; - // Retrieve the frame's full text. + // full text std::wstring contents; CaptureText(main_frame, &contents); if (contents.size()) { - // Send the text to the browser for indexing (the browser might decide not - // to index, if the URL is HTTPS for instance) and language discovery. - Send(new ViewHostMsg_PageContents(routing_id_, url, load_id, contents)); + // Send the text to the browser for indexing. + Send(new ViewHostMsg_PageContents(url, load_id, contents)); + } + + // Send over text content of this page to the browser. + if (determine_page_text_after_loading_stops_) { + determine_page_text_after_loading_stops_ = false; + Send(new ViewMsg_DeterminePageText_Reply(routing_id_, contents)); } // thumbnail @@ -603,6 +610,15 @@ void RenderView::CaptureText(WebFrame* frame, std::wstring* contents) { if (!frame) return; + // Don't index any https pages. People generally don't want their bank + // accounts, etc. indexed on their computer, especially since some of these + // things are not marked cachable. + // TODO(brettw) we may want to consider more elaborate heuristics such as + // the cachability of the page. We may also want to consider subframes (this + // test will still index subframes if the subframe is SSL). + if (GURL(frame->url()).SchemeIsSecure()) + return; + #ifdef TIME_TEXT_RETRIEVAL double begin = time_util::GetHighResolutionTimeNow(); #endif @@ -2948,6 +2964,23 @@ void RenderView::OnFind(int request_id, const string16& search_text, } } +void RenderView::OnDeterminePageText() { + if (!is_loading_) { + if (!webview()) + return; + WebFrame* main_frame = webview()->mainFrame(); + std::wstring contents; + CaptureText(main_frame, &contents); + Send(new ViewMsg_DeterminePageText_Reply(routing_id_, contents)); + determine_page_text_after_loading_stops_ = false; + return; + } + + // We set |determine_page_text_after_loading_stops_| true here so that, + // after page has been loaded completely, the text in the page is captured. + determine_page_text_after_loading_stops_ = true; +} + void RenderView::DnsPrefetch(const std::vector<std::string>& host_names) { Send(new ViewHostMsg_DnsPrefetch(host_names)); } diff --git a/chrome/renderer/render_view.h b/chrome/renderer/render_view.h index 4ae9e38..c69a601 100644 --- a/chrome/renderer/render_view.h +++ b/chrome/renderer/render_view.h @@ -939,6 +939,9 @@ class RenderView : public RenderWidget, // Hopds a reference to the service which provides desktop notifications. scoped_ptr<NotificationProvider> notification_provider_; + // Set to true if request for capturing page text has been made. + bool determine_page_text_after_loading_stops_; + // Holds state pertaining to a navigation that we initiated. This is held by // the WebDataSource::ExtraData attribute. We use pending_navigation_state_ // as a temporary holder for the state until the WebDataSource corresponding |