// Copyright 2019 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_NAVIGATION_CRW_PENDING_NAVIGATION_INFO_H_
#define IOS_WEB_NAVIGATION_CRW_PENDING_NAVIGATION_INFO_H_

#import <UIKit/UIKit.h>
#import <WebKit/WebKit.h>

#include "net/http/http_response_headers.h"

// A container object for any navigation information that is only available
// during pre-commit delegate callbacks, and thus must be held until the
// navigation commits and the information can be used.
@interface CRWPendingNavigationInfo : NSObject
// The referrer for the page.
@property(nonatomic, copy) NSString* referrer;
// The MIME type for the page.
@property(nonatomic, copy) NSString* MIMEType;
// The navigation type for the load.
@property(nonatomic, assign) WKNavigationType navigationType;
// HTTP request method for the load.
@property(nonatomic, copy) NSString* HTTPMethod;
// HTTP headers.
@property(nonatomic, assign) scoped_refptr<net::HttpResponseHeaders>
    HTTPHeaders;
// Whether the pending navigation has been cancelled by an embedder before the
// navigation is committed.  Cancelled navigations without a cancellation error
// should simply be discarded.
@property(nonatomic, assign) BOOL cancelled;
// The error to display if the pending navigation was cancelled by an embedder
// using PolicyDecision::CancelAndDisplayError().
@property(nonatomic, copy) NSError* cancellationError;
// Whether the navigation was initiated by a user gesture.
@property(nonatomic, assign) BOOL hasUserGesture;
// Whether the navigation had a server redirect.
@property(nonatomic, assign) BOOL unsafeRedirect;

@end

#endif  // IOS_WEB_NAVIGATION_CRW_PENDING_NAVIGATION_INFO_H_
