// Copyright 2015 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_COMMON_CRW_CONTENT_VIEW_H_
#define IOS_WEB_COMMON_CRW_CONTENT_VIEW_H_
#import <UIKit/UIKit.h>
// For devices running on a version >= iOS 16.0+, WKFullScreenState is converted
// into CrFullscreenState. Once min version supported is iOS 16.0,
// uses of this enum should be be replaced with WKFullScreenState. This enum is
// being used for metrics so entries should not be removed or reordered. Please
// keep in sync with "IOS.Fullscreen.State" in
// src/tools/metrics/histograms/enums.xml.
enum class CrFullscreenState {
kEnteringFullscreen = 0,
kExitingFullscreen = 1,
kInFullscreen = 2,
kNotInFullScreen = 3,
kMaxValue = kNotInFullScreen,
};
// UIViews conforming to CRWScrollableContent (i.e. CRWContentViews) are used
// to display content within a WebState.
@protocol CRWScrollableContent <NSObject>
// The scroll view used to display the content. If `scrollView` is non-nil,
// it will be used to back the CRWContentViewScrollViewProxy and is expected to
// be a subview of the CRWContentView.
@property(nonatomic, strong, readonly) UIScrollView* scrollView;
// Adds an offset to the content view. This updates the location of the scroll
// view relative to the receiver, and does not update the scroll view's content
// offset.
@property(nonatomic, assign) CGPoint contentOffset;
// Adds an inset to content view. Implementations of this protocol can
// implement this method using UIScrollView.contentInset (where applicable) or
// via resizing a subview's frame. Can be used as a workaround for WKWebView
// bug, where UIScrollView.content inset does not work (rdar://23584409).
@property(nonatomic, assign) UIEdgeInsets contentInset;
@optional
// Whether or not the content view should use the content inset when setting
// `contentInset`.
@property(nonatomic, assign) BOOL shouldUseViewContentInset;
@end
// Convenience type for content views.
typedef UIView<CRWScrollableContent> CRWContentView;
#endif // IOS_WEB_COMMON_CRW_CONTENT_VIEW_H_