// Copyright 2017 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_VIEW_INTERNAL_WEB_VIEW_WEB_STATE_POLICY_DECIDER_H_
#define IOS_WEB_VIEW_INTERNAL_WEB_VIEW_WEB_STATE_POLICY_DECIDER_H_
#import <Foundation/Foundation.h>
#import "ios/web/public/navigation/web_state_policy_decider.h"
namespace web {
class WebState;
}
@class CWVWebView;
namespace ios_web_view {
// An implementation of web::WebStatePolicyDecider which delegates to:
// DEPRECATED:
// [web_view.navigationDelegate webView:shouldStartLoadWithRequest:]
// [web_view.navigationDelegate webView:shouldContinueLoadWithResponse:]
//
// RECOMMENDED:
// [web_view.navigationDelegate
// webView:decidePolicyForNavigationAction:decisionHandler:]
// [web_view.navigationDelegate
// webView:decidePolicyForNavigationResponse:decisionHandler:]
class WebViewWebStatePolicyDecider : public web::WebStatePolicyDecider {
public:
WebViewWebStatePolicyDecider(web::WebState* web_state, CWVWebView* web_view);
// web::WebStatePolicyDecider overrides:
void ShouldAllowRequest(
NSURLRequest* request,
web::WebStatePolicyDecider::RequestInfo request_info,
web::WebStatePolicyDecider::PolicyDecisionCallback callback) override;
void ShouldAllowResponse(
NSURLResponse* response,
web::WebStatePolicyDecider::ResponseInfo response_info,
web::WebStatePolicyDecider::PolicyDecisionCallback callback) override;
private:
// Delegates to |delegate| property of this web view.
__weak CWVWebView* web_view_ = nil;
};
} // namespace ios_web_view
#endif // IOS_WEB_VIEW_INTERNAL_WEB_VIEW_WEB_STATE_POLICY_DECIDER_H_