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

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

Issue 1363803003: Remove ChromeRenderFrameObserver::HasRefreshMetaTag. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 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
« no previous file with comments | « chrome/renderer/chrome_render_frame_observer.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/chrome_render_frame_observer.h" 5 #include "chrome/renderer/chrome_render_frame_observer.h"
6 6
7 #include <limits> 7 #include <limits>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after
366 if (frame->parent()) 366 if (frame->parent())
367 return; 367 return;
368 368
369 GURL osdd_url = frame->document().openSearchDescriptionURL(); 369 GURL osdd_url = frame->document().openSearchDescriptionURL();
370 if (!osdd_url.is_empty()) { 370 if (!osdd_url.is_empty()) {
371 Send(new ChromeViewHostMsg_PageHasOSDD( 371 Send(new ChromeViewHostMsg_PageHasOSDD(
372 routing_id(), frame->document().url(), osdd_url, 372 routing_id(), frame->document().url(), osdd_url,
373 search_provider::AUTODETECTED_PROVIDER)); 373 search_provider::AUTODETECTED_PROVIDER));
374 } 374 }
375 375
376 // Don't capture pages including refresh meta tag. 376 // Don't capture pages that have pending redirect or location change.
377 if (HasRefreshMetaTag(frame)) 377 if (frame->isNavigationScheduled())
378 return; 378 return;
379 379
380 page_info_.CapturePageInfoLater( 380 page_info_.CapturePageInfoLater(
381 FINAL_CAPTURE, render_frame(), 381 FINAL_CAPTURE, render_frame(),
382 base::TimeDelta::FromMilliseconds( 382 base::TimeDelta::FromMilliseconds(
383 render_frame()->GetRenderView()->GetContentStateImmediately() 383 render_frame()->GetRenderView()->GetContentStateImmediately()
384 ? 0 384 ? 0
385 : kDelayForCaptureMs)); 385 : kDelayForCaptureMs));
386 } 386 }
387 387
388 void ChromeRenderFrameObserver::DidStartProvisionalLoad() { 388 void ChromeRenderFrameObserver::DidStartProvisionalLoad() {
389 // Let translate_helper do any preparatory work for loading a URL. 389 // Let translate_helper do any preparatory work for loading a URL.
390 if (!translate_helper_) 390 if (!translate_helper_)
391 return; 391 return;
392 392
393 translate_helper_->PrepareForUrl( 393 translate_helper_->PrepareForUrl(
394 render_frame()->GetWebFrame()->document().url()); 394 render_frame()->GetWebFrame()->document().url());
395 } 395 }
396 396
397 void ChromeRenderFrameObserver::DidCommitProvisionalLoad( 397 void ChromeRenderFrameObserver::DidCommitProvisionalLoad(
398 bool is_new_navigation, 398 bool is_new_navigation,
399 bool is_same_page_navigation) { 399 bool is_same_page_navigation) {
400 WebLocalFrame* frame = render_frame()->GetWebFrame(); 400 WebLocalFrame* frame = render_frame()->GetWebFrame();
401 401
402 // Don't do anything for subframes. 402 // Don't do anything for subframes.
403 if (frame->parent()) 403 if (frame->parent())
404 return; 404 return;
405 405
406 // Don't capture pages being not new, or including refresh meta tag. 406 // Don't capture pages being not new, with pending redirect, or location
407 if (!is_new_navigation || HasRefreshMetaTag(frame)) 407 // change.
408 if (!is_new_navigation || frame->isNavigationScheduled())
408 return; 409 return;
409 410
410 base::debug::SetCrashKeyValue( 411 base::debug::SetCrashKeyValue(
411 crash_keys::kViewCount, 412 crash_keys::kViewCount,
412 base::SizeTToString(content::RenderView::GetRenderViewCount())); 413 base::SizeTToString(content::RenderView::GetRenderViewCount()));
413 414
414 page_info_.CapturePageInfoLater( 415 page_info_.CapturePageInfoLater(
415 PRELIMINARY_CAPTURE, render_frame(), 416 PRELIMINARY_CAPTURE, render_frame(),
416 base::TimeDelta::FromMilliseconds(kDelayForForcedCaptureMs)); 417 base::TimeDelta::FromMilliseconds(kDelayForForcedCaptureMs));
417 } 418 }
418 419
419 bool ChromeRenderFrameObserver::HasRefreshMetaTag(WebLocalFrame* frame) {
420 if (!frame)
421 return false;
422 WebElement head = frame->document().head();
423 if (head.isNull() || !head.hasChildNodes())
424 return false;
425
426 const WebString tag_name(base::ASCIIToUTF16("meta"));
427 const WebString attribute_name(base::ASCIIToUTF16("http-equiv"));
428
429 WebNodeList children = head.childNodes();
430 for (size_t i = 0; i < children.length(); ++i) {
431 WebNode node = children.item(i);
432 if (!node.isElementNode())
433 continue;
434 WebElement element = node.to<WebElement>();
435 if (!element.hasHTMLTagName(tag_name))
436 continue;
437 WebString value = element.getAttribute(attribute_name);
438 if (value.isNull() ||
439 !base::LowerCaseEqualsASCII(base::StringPiece16(value), "refresh"))
440 continue;
441 return true;
442 }
443 return false;
444 }
445
446 void ChromeRenderFrameObserver::PageCaptured(base::string16* content, 420 void ChromeRenderFrameObserver::PageCaptured(base::string16* content,
447 CaptureType capture_type) { 421 CaptureType capture_type) {
448 if (translate_helper_) 422 if (translate_helper_)
449 translate_helper_->PageCaptured(*content); 423 translate_helper_->PageCaptured(*content);
450 424
451 TRACE_EVENT0("renderer", "ChromeRenderViewObserver::CapturePageInfo"); 425 TRACE_EVENT0("renderer", "ChromeRenderViewObserver::CapturePageInfo");
452 426
453 #if defined(FULL_SAFE_BROWSING) 427 #if defined(FULL_SAFE_BROWSING)
454 // Will swap out the string. 428 // Will swap out the string.
455 if (phishing_classifier_) 429 if (phishing_classifier_)
456 phishing_classifier_->PageCaptured(content, 430 phishing_classifier_->PageCaptured(content,
457 capture_type == PRELIMINARY_CAPTURE); 431 capture_type == PRELIMINARY_CAPTURE);
458 #endif 432 #endif
459 } 433 }
OLDNEW
« no previous file with comments | « chrome/renderer/chrome_render_frame_observer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698