123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- // Copyright 2015 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.
- #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;
- }
- // Observes page lifecycle events from Objective-C. To use as a
- // web::WebStateObserver, wrap in a web::WebStateObserverBridge.
- @protocol CRWWebStateObserver <NSObject>
- @optional
- // Invoked by WebStateObserverBridge::WasShown.
- - (void)webStateWasShown:(web::WebState*)webState;
- // Invoked by WebStateObserverBridge::WasHidden.
- - (void)webStateWasHidden:(web::WebState*)webState;
- // Invoked by WebStateObserverBridge::DidStartNavigation.
- - (void)webState:(web::WebState*)webState
- didStartNavigation:(web::NavigationContext*)navigationContext;
- // Invoked by WebStateObserverBridge::DidRedirectNavigation.
- - (void)webState:(web::WebState*)webState
- didRedirectNavigation:(web::NavigationContext*)navigationContext;
- // Invoked by WebStateObserverBridge::DidFinishNavigation.
- - (void)webState:(web::WebState*)webState
- didFinishNavigation:(web::NavigationContext*)navigationContext;
- // Invoked by WebStateObserverBridge::DidStartLoading.
- - (void)webStateDidStartLoading:(web::WebState*)webState;
- // Invoked by WebStateObserverBridge::DidStopLoading.
- - (void)webStateDidStopLoading:(web::WebState*)webState;
- // Invoked by WebStateObserverBridge::PageLoaded.
- - (void)webState:(web::WebState*)webState didLoadPageWithSuccess:(BOOL)success;
- // Invoked by WebStateObserverBridge::LoadProgressChanged.
- - (void)webState:(web::WebState*)webState
- didChangeLoadingProgress:(double)progress;
- // Invoked by WebStateObserverBridge::DidChangeBackForwardState.
- - (void)webStateDidChangeBackForwardState:(web::WebState*)webState;
- // Invoked by WebStateObserverBridge::TitleWasSet.
- - (void)webStateDidChangeTitle:(web::WebState*)webState;
- // Invoked by WebStateObserverBridge::DidChangeVisibleSecurityState.
- - (void)webStateDidChangeVisibleSecurityState:(web::WebState*)webState;
- // Invoked by WebStateObserverBridge::FaviconUrlUpdated.
- - (void)webState:(web::WebState*)webState
- didUpdateFaviconURLCandidates:
- (const std::vector<web::FaviconURL>&)candidates;
- // Invoked by WebStateObserverBridge::PermissionStateChanged.
- - (void)webState:(web::WebState*)webState
- didChangeStateForPermission:(web::Permission)permission
- API_AVAILABLE(ios(15.0));
- // Invoked by WebStateObserverBridge::WebFrameDidBecomeAvailable.
- - (void)webState:(web::WebState*)webState
- frameDidBecomeAvailable:(web::WebFrame*)webFrame;
- // Invoked by WebStateObserverBridge::WebFrameWillBecomeUnavailable.
- - (void)webState:(web::WebState*)webState
- frameWillBecomeUnavailable:(web::WebFrame*)webFrame;
- // Invoked by WebStateObserverBridge::RenderProcessGone.
- - (void)renderProcessGoneForWebState:(web::WebState*)webState;
- // Invoked by WebStateObserverBridge::WebStateRealized.
- - (void)webStateRealized:(web::WebState*)webState;
- // Note: after |webStateDestroyed:| is invoked, the WebState being observed
- // is no longer valid.
- - (void)webStateDestroyed:(web::WebState*)webState;
- @end
- namespace web {
- // Bridge to use an id<CRWWebStateObserver> as a web::WebStateObserver.
- class WebStateObserverBridge : public web::WebStateObserver {
- public:
- // It it the responsibility of calling code to add/remove the instance
- // from the WebStates observer lists.
- WebStateObserverBridge(id<CRWWebStateObserver> observer);
- WebStateObserverBridge(const WebStateObserverBridge&) = delete;
- WebStateObserverBridge& operator=(const WebStateObserverBridge&) = delete;
- ~WebStateObserverBridge() override;
- // web::WebStateObserver methods.
- 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
- API_AVAILABLE(ios(15.0));
- void WebFrameDidBecomeAvailable(WebState* web_state,
- WebFrame* web_frame) override;
- void WebFrameWillBecomeUnavailable(WebState* web_state,
- WebFrame* web_frame) 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;
- };
- } // namespace web
- #endif // IOS_WEB_PUBLIC_WEB_STATE_OBSERVER_BRIDGE_H_
|