| // Copyright 2016 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "ios/chrome/browser/ui/contextual_search/contextual_search_web_state_observer.h" |
| |
| #if !defined(__has_feature) || !__has_feature(objc_arc) |
| #error "This file requires ARC support." |
| #endif |
| |
| ContextualSearchWebStateObserver::ContextualSearchWebStateObserver( |
| id<ContextualSearchWebStateDelegate> delegate) |
| : web::WebStateObserver(), delegate_(delegate), loaded_(false) {} |
| |
| ContextualSearchWebStateObserver::~ContextualSearchWebStateObserver() {} |
| |
| void ContextualSearchWebStateObserver::ObserveWebState( |
| web::WebState* web_state) { |
| loaded_ = false; |
| Observe(web_state); |
| } |
| |
| void ContextualSearchWebStateObserver::NavigationItemCommitted( |
| const web::LoadCommittedDetails& load_details) { |
| if (loaded_ && [delegate_ respondsToSelector:@selector(webState: |
| navigatedWithDetails:)]) { |
| [delegate_ webState:web_state() navigatedWithDetails:load_details]; |
| } |
| } |
| |
| void ContextualSearchWebStateObserver::PageLoaded( |
| web::PageLoadCompletionStatus load_completion_status) { |
| if ([delegate_ |
| respondsToSelector:@selector(webState:pageLoadedWithStatus:)]) { |
| [delegate_ webState:web_state() |
| pageLoadedWithStatus:load_completion_status]; |
| } |
| loaded_ = true; |
| } |
| |
| void ContextualSearchWebStateObserver::WebStateDestroyed() { |
| if ([delegate_ respondsToSelector:@selector(webStateDestroyed:)]) { |
| [delegate_ webStateDestroyed:web_state()]; |
| } |
| } |