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