| // Copyright 2019 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef IOS_WEB_NAVIGATION_CRW_JS_NAVIGATION_HANDLER_H_ |
| #define IOS_WEB_NAVIGATION_CRW_JS_NAVIGATION_HANDLER_H_ |
| |
| #import <WebKit/WebKit.h> |
| |
| #import "base/values.h" |
| #import "ios/web/web_state/ui/crw_web_view_handler.h" |
| #include "url/gurl.h" |
| |
| namespace web { |
| class UserInteractionState; |
| class WebStateImpl; |
| } // namespace web |
| |
| // Handles JS messages related to navigation(e.g. window.history.forward). |
| @interface CRWJSNavigationHandler : CRWWebViewHandler |
| |
| // Whether the web page is currently performing window.history.pushState or |
| // window.history.replaceState. |
| @property(nonatomic, assign) BOOL changingHistoryState; |
| |
| // Handles a navigation will change state message for the current webpage. |
| - (void)handleNavigationWillChangeState; |
| |
| // Handles a navigation did push state message for the current webpage. |
| - (void)handleNavigationDidPushStateMessage:(base::Value::Dict*)dict |
| webState:(web::WebStateImpl*)webStateImpl |
| hasUserGesture:(BOOL)hasUserGesture |
| userInteractionState: |
| (web::UserInteractionState*)userInteractionState |
| currentURL:(GURL)currentURL; |
| |
| // Handles a navigation did replace state message for the current webpage. |
| - (void)handleNavigationDidReplaceStateMessage:(base::Value::Dict*)dict |
| webState:(web::WebStateImpl*)webStateImpl |
| hasUserGesture:(BOOL)hasUserGesture |
| userInteractionState: |
| (web::UserInteractionState*)userInteractionState |
| currentURL:(GURL)currentURL; |
| @end |
| |
| #endif // IOS_WEB_NAVIGATION_CRW_JS_NAVIGATION_HANDLER_H_ |