Home | History | Annotate | Download | only in content
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "components/dom_distiller/content/web_contents_main_frame_observer.h"
      6 
      7 #include "content/public/browser/navigation_details.h"
      8 #include "content/public/browser/render_frame_host.h"
      9 #include "content/public/browser/web_contents.h"
     10 #include "content/public/browser/web_contents_observer.h"
     11 #include "content/public/browser/web_contents_user_data.h"
     12 
     13 DEFINE_WEB_CONTENTS_USER_DATA_KEY(dom_distiller::WebContentsMainFrameObserver);
     14 
     15 namespace dom_distiller {
     16 
     17 WebContentsMainFrameObserver::WebContentsMainFrameObserver(
     18     content::WebContents* web_contents)
     19     : is_document_loaded_in_main_frame_(false), is_initialized_(false) {
     20   content::WebContentsObserver::Observe(web_contents);
     21 }
     22 
     23 WebContentsMainFrameObserver::~WebContentsMainFrameObserver() {
     24   CleanUp();
     25 }
     26 
     27 void WebContentsMainFrameObserver::DocumentLoadedInFrame(
     28     content::RenderFrameHost* render_frame_host) {
     29   if (!render_frame_host->GetParent()) {
     30     is_document_loaded_in_main_frame_ = true;
     31   }
     32 }
     33 
     34 void WebContentsMainFrameObserver::DidNavigateMainFrame(
     35     const content::LoadCommittedDetails& details,
     36     const content::FrameNavigateParams& params) {
     37   if (details.is_main_frame) {
     38     is_document_loaded_in_main_frame_ = false;
     39     is_initialized_ = true;
     40   }
     41 }
     42 
     43 void WebContentsMainFrameObserver::RenderProcessGone(
     44     base::TerminationStatus status) {
     45   CleanUp();
     46 }
     47 
     48 void WebContentsMainFrameObserver::CleanUp() {
     49   content::WebContentsObserver::Observe(NULL);
     50 }
     51 
     52 }  // namespace dom_distiller
     53