| Index: ios/web/public/web_state/page_scroll_state.h
|
| diff --git a/ios/web/public/web_state/page_scroll_state.h b/ios/web/public/web_state/page_scroll_state.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9984019356ff6959ac933bd3225ee7fd2c4781fb
|
| --- /dev/null
|
| +++ b/ios/web/public/web_state/page_scroll_state.h
|
| @@ -0,0 +1,75 @@
|
| +// 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_PAGE_SCROLL_STATE_H_
|
| +#define IOS_WEB_PUBLIC_WEB_STATE_PAGE_SCROLL_STATE_H_
|
| +
|
| +namespace web {
|
| +
|
| +// Class used to represent the scrolling offset and the zoom scale of a webview.
|
| +class PageScrollState {
|
| + public:
|
| + // Default constructor. Initializes scroll offsets and zoom scales to NAN.
|
| + PageScrollState();
|
| + // Constructor with initial values.
|
| + PageScrollState(double scroll_offset_x,
|
| + double scroll_offset_y,
|
| + double minimum_zoom_scale,
|
| + double maximum_zoom_scale,
|
| + double zoom_scale);
|
| + ~PageScrollState();
|
| +
|
| + // PageScrollStates cannot be applied until the scroll offset and zoom scale
|
| + // are both valid.
|
| + bool IsValid() const;
|
| +
|
| + // The scroll offset is valid if its x and y values are both non-NAN.
|
| + bool IsScrollOffsetValid() const;
|
| +
|
| + // Non-legacy zoom scales are valid if all three values are non-NAN and the
|
| + // zoom scale is within the minimum and maximum scales. Legacy-format
|
| + // PageScrollStates are considered valid if the minimum and maximum scales
|
| + // are NAN and the zoom scale is greater than zero.
|
| + bool IsZoomScaleValid() const;
|
| +
|
| + // PageScrollStates restored from the legacy serialization format make
|
| + // assumptions about the web view's implementation of zooming, and contain a
|
| + // non-NAN zoom scale and a NAN minimum and maximum scale. Legacy zoom scales
|
| + // can only be applied to CRWUIWebViewWebControllers.
|
| + bool IsZoomScaleLegacyFormat() const;
|
| +
|
| + // Accessors for scroll offsets and zoom scale.
|
| + double scroll_offset_x() const { return scroll_offset_x_; }
|
| + void set_scroll_offset_x(double scroll_offset_x) {
|
| + scroll_offset_x_ = scroll_offset_x;
|
| + }
|
| + double scroll_offset_y() const { return scroll_offset_y_; }
|
| + void set_scroll_offset_y(double scroll_offset_y) {
|
| + scroll_offset_y_ = scroll_offset_y;
|
| + }
|
| + double minimum_zoom_scale() const { return minimum_zoom_scale_; }
|
| + void set_minimum_zoom_scale(double minimum_zoom_scale) {
|
| + minimum_zoom_scale_ = minimum_zoom_scale;
|
| + }
|
| + double maximum_zoom_scale() const { return maximum_zoom_scale_; }
|
| + void set_maximum_zoom_scale(double maximum_zoom_scale) {
|
| + maximum_zoom_scale_ = maximum_zoom_scale;
|
| + }
|
| + double zoom_scale() const { return zoom_scale_; }
|
| + void set_zoom_scale(double zoom_scale) { zoom_scale_ = zoom_scale; }
|
| +
|
| + // Comparator operator.
|
| + bool operator==(const PageScrollState& other) const;
|
| +
|
| + private:
|
| + double scroll_offset_x_;
|
| + double scroll_offset_y_;
|
| + double minimum_zoom_scale_;
|
| + double maximum_zoom_scale_;
|
| + double zoom_scale_;
|
| +};
|
| +
|
| +} // namespace web
|
| +
|
| +#endif // IOS_WEB_PUBLIC_WEB_STATE_PAGE_SCROLL_STATE_H_
|
|
|