| Index: chrome/renderer/chrome_render_view_observer.cc
|
| diff --git a/chrome/renderer/chrome_render_view_observer.cc b/chrome/renderer/chrome_render_view_observer.cc
|
| index f221836df0072563c80fbeb8e36bec974ccc2820..a7302c3daa2f7ae085cf971e68598242ca965e67 100644
|
| --- a/chrome/renderer/chrome_render_view_observer.cc
|
| +++ b/chrome/renderer/chrome_render_view_observer.cc
|
| @@ -80,16 +80,9 @@ using blink::WebView;
|
| using blink::WebVector;
|
| using blink::WebWindowFeatures;
|
|
|
| -// Delay in milliseconds that we'll wait before capturing the page contents
|
| -// and thumbnail.
|
| +// Delay in milliseconds that we'll wait before capturing the page contents.
|
| static const int kDelayForCaptureMs = 500;
|
|
|
| -// Typically, we capture the page data once the page is loaded.
|
| -// Sometimes, the page never finishes to load, preventing the page capture
|
| -// To workaround this problem, we always perform a capture after the following
|
| -// delay.
|
| -static const int kDelayForForcedCaptureMs = 6000;
|
| -
|
| // define to write the time necessary for thumbnail/DOM text retrieval,
|
| // respectively, into the system debug log
|
| // #define TIME_TEXT_RETRIEVAL
|
| @@ -272,10 +265,6 @@ void ChromeRenderViewObserver::DidStopLoading() {
|
| search_provider::AUTODETECTED_PROVIDER));
|
| }
|
|
|
| - // Don't capture pages including refresh meta tag.
|
| - if (HasRefreshMetaTag(main_frame))
|
| - return;
|
| -
|
| CapturePageInfoLater(
|
| false, // preliminary_capture
|
| base::TimeDelta::FromMilliseconds(
|
| @@ -286,16 +275,12 @@ void ChromeRenderViewObserver::DidStopLoading() {
|
| void ChromeRenderViewObserver::DidCommitProvisionalLoad(
|
| WebLocalFrame* frame, bool is_new_navigation) {
|
| // Don't capture pages being not new, or including refresh meta tag.
|
| - if (!is_new_navigation || HasRefreshMetaTag(frame))
|
| + if (!is_new_navigation)
|
| return;
|
|
|
| base::debug::SetCrashKeyValue(
|
| crash_keys::kViewCount,
|
| base::SizeTToString(content::RenderView::GetRenderViewCount()));
|
| -
|
| - CapturePageInfoLater(
|
| - true, // preliminary_capture
|
| - base::TimeDelta::FromMilliseconds(kDelayForForcedCaptureMs));
|
| }
|
|
|
| void ChromeRenderViewObserver::CapturePageInfoLater(bool preliminary_capture,
|
| @@ -308,6 +293,10 @@ void ChromeRenderViewObserver::CapturePageInfoLater(bool preliminary_capture,
|
| preliminary_capture));
|
| }
|
|
|
| +void ChromeRenderViewObserver::DidFirstLayoutAfterFinishedParsing() {
|
| + CapturePageInfo(true);
|
| +}
|
| +
|
| void ChromeRenderViewObserver::CapturePageInfo(bool preliminary_capture) {
|
| if (!render_view()->GetWebView())
|
| return;
|
| @@ -323,6 +312,10 @@ void ChromeRenderViewObserver::CapturePageInfo(bool preliminary_capture) {
|
| if (main_frame->isWebRemoteFrame())
|
| return;
|
|
|
| + WebLocalFrame* local_frame = main_frame->toWebLocalFrame();
|
| + if (local_frame->isNavigationScheduled())
|
| + return;
|
| +
|
| // Don't index/capture pages that are in view source mode.
|
| if (main_frame->isViewSourceModeEnabled())
|
| return;
|
| @@ -388,30 +381,3 @@ void ChromeRenderViewObserver::CaptureText(WebFrame* frame,
|
| contents->resize(last_space_index);
|
| }
|
| }
|
| -
|
| -bool ChromeRenderViewObserver::HasRefreshMetaTag(WebFrame* frame) {
|
| - if (!frame)
|
| - return false;
|
| - WebElement head = frame->document().head();
|
| - if (head.isNull() || !head.hasChildNodes())
|
| - return false;
|
| -
|
| - const WebString tag_name(base::ASCIIToUTF16("meta"));
|
| - const WebString attribute_name(base::ASCIIToUTF16("http-equiv"));
|
| -
|
| - WebNodeList children = head.childNodes();
|
| - for (size_t i = 0; i < children.length(); ++i) {
|
| - WebNode node = children.item(i);
|
| - if (!node.isElementNode())
|
| - continue;
|
| - WebElement element = node.to<WebElement>();
|
| - if (!element.hasHTMLTagName(tag_name))
|
| - continue;
|
| - WebString value = element.getAttribute(attribute_name);
|
| - if (value.isNull() ||
|
| - !base::LowerCaseEqualsASCII(base::StringPiece16(value), "refresh"))
|
| - continue;
|
| - return true;
|
| - }
|
| - return false;
|
| -}
|
|
|