#ifndef IOS_WEB_PUBLIC_WEB_STATE_OBSERVER_BRIDGE_H_
#define IOS_WEB_PUBLIC_WEB_STATE_OBSERVER_BRIDGE_H_
#import <Foundation/Foundation.h>
#include <string>
#include "ios/web/public/web_state_observer.h"
namespace web {
class NavigationContext;
enum Permission : NSUInteger;
}
@protocol CRWWebStateObserver <NSObject>
@optional
- (void)webStateWasShown:(web::WebState*)webState;
- (void)webStateWasHidden:(web::WebState*)webState;
- (void)webState:(web::WebState*)webState
didStartNavigation:(web::NavigationContext*)navigationContext;
- (void)webState:(web::WebState*)webState
didRedirectNavigation:(web::NavigationContext*)navigationContext;
- (void)webState:(web::WebState*)webState
didFinishNavigation:(web::NavigationContext*)navigationContext;
- (void)webStateDidStartLoading:(web::WebState*)webState;
- (void)webStateDidStopLoading:(web::WebState*)webState;
- (void)webState:(web::WebState*)webState didLoadPageWithSuccess:(BOOL)success;
- (void)webState:(web::WebState*)webState
didChangeLoadingProgress:(double)progress;
- (void)webStateDidChangeBackForwardState:(web::WebState*)webState;
- (void)webStateDidChangeTitle:(web::WebState*)webState;
- (void)webStateDidChangeVisibleSecurityState:(web::WebState*)webState;
- (void)webState:(web::WebState*)webState
didUpdateFaviconURLCandidates:
(const std::vector<web::FaviconURL>&)candidates;
- (void)webState:(web::WebState*)webState
didChangeStateForPermission:(web::Permission)permission;
- (void)renderProcessGoneForWebState:(web::WebState*)webState;
- (void)webStateRealized:(web::WebState*)webState;
- (void)webStateDestroyed:(web::WebState*)webState;
@end
namespace web {
class WebStateObserverBridge : public web::WebStateObserver {
public:
WebStateObserverBridge(id<CRWWebStateObserver> observer);
WebStateObserverBridge(const WebStateObserverBridge&) = delete;
WebStateObserverBridge& operator=(const WebStateObserverBridge&) = delete;
~WebStateObserverBridge() override;
void WasShown(web::WebState* web_state) override;
void WasHidden(web::WebState* web_state) override;
void DidStartNavigation(web::WebState* web_state,
NavigationContext* navigation_context) override;
void DidRedirectNavigation(
web::WebState* web_state,
web::NavigationContext* navigation_context) override;
void DidFinishNavigation(web::WebState* web_state,
NavigationContext* navigation_context) override;
void DidStartLoading(web::WebState* web_state) override;
void DidStopLoading(web::WebState* web_state) override;
void PageLoaded(
web::WebState* web_state,
web::PageLoadCompletionStatus load_completion_status) override;
void LoadProgressChanged(web::WebState* web_state, double progress) override;
void DidChangeBackForwardState(web::WebState* web_state) override;
void TitleWasSet(web::WebState* web_state) override;
void DidChangeVisibleSecurityState(web::WebState* web_state) override;
void FaviconUrlUpdated(web::WebState* web_state,
const std::vector<FaviconURL>& candidates) override;
void PermissionStateChanged(web::WebState* web_state,
web::Permission permission) override;
void RenderProcessGone(web::WebState* web_state) override;
void WebStateRealized(web::WebState* web_state) override;
void WebStateDestroyed(web::WebState* web_state) override;
private:
__weak id<CRWWebStateObserver> observer_ = nil;
};
}
#endif