Index: ios/chrome/browser/ui/stack_view/stack_view_controller_private.h |
diff --git a/ios/chrome/browser/ui/stack_view/stack_view_controller_private.h b/ios/chrome/browser/ui/stack_view/stack_view_controller_private.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..0bdbdf1c7e82d0d42b9d130b9d676faff4cbc309 |
--- /dev/null |
+++ b/ios/chrome/browser/ui/stack_view/stack_view_controller_private.h |
@@ -0,0 +1,109 @@ |
+// 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_CHROME_BROWSER_UI_STACK_VIEW_STACK_VIEW_CONTROLLER_PRIVATE_H_ |
+#define IOS_CHROME_BROWSER_UI_STACK_VIEW_STACK_VIEW_CONTROLLER_PRIVATE_H_ |
+ |
+#import "ios/chrome/browser/ui/stack_view/card_set.h" |
+#import "ios/chrome/browser/ui/stack_view/stack_view_controller.h" |
+ |
+@class ToolbarController; |
+ |
+namespace { |
+// Styles used to specify the transition animation type for presenting and |
+// dismissing the stack view. |
+typedef enum { |
+ STACK_TRANSITION_STYLE_NONE = 0, |
+ STACK_TRANSITION_STYLE_PRESENTING, |
+ STACK_TRANSITION_STYLE_DISMISSING |
+} StackTransitionStyle; |
+} // namespace |
+ |
+@interface StackViewController ()<CardSetObserver, |
+ UIGestureRecognizerDelegate, |
+ UIScrollViewDelegate> |
+ |
+// Separated out to allow tests to mock CardSet directly. |
+- (instancetype)initWithMainCardSet:(CardSet*)mainCardSet |
+ otrCardSet:(CardSet*)otrCardSet |
+ activeCardSet:(CardSet*)activeCardSet |
+ NS_DESIGNATED_INITIALIZER; |
+ |
+- (instancetype)initWithNibName:(NSString*)nibNameOrNil |
+ bundle:(NSBundle*)nibBundleOrNil NS_UNAVAILABLE; |
+ |
+- (instancetype)initWithCoder:(NSCoder*)aDecoder NS_UNAVAILABLE; |
+ |
+// Sets up the display views of the card sets, including initialization, |
+// initial size configuration, adding as subviews of the scroll view, and |
+// attaching to the card sets. |
+- (void)setUpDisplayViews; |
+ |
+// Registers listeners for the appropriate notifications. |
+- (void)registerForNotifications; |
+ |
+// Used during |-dealloc| and |-didReceiveMemoryWaring| to clear any references |
+// to the cards and removes |self| as an observer to any notifications. |
+- (void)cleanUpViewsAndNotifications; |
+ |
+// Recenters the scroll view if it gets too close to one of its boundaries. |
+// Updates the positions of the card stacks' display views to remain visually |
+// centered. |
+- (void)recenterScrollViewIfNecessary; |
+ |
+// Returns YES if the currently active card set is the incognito set. |
+- (BOOL)isCurrentSetIncognito; |
+ |
+// Returns the card set that is not currently active. |
+- (CardSet*)inactiveCardSet; |
+ |
+// Makes |cardSet| the active set, updating the UI accordingly. |
+- (void)setActiveCardSet:(CardSet*)cardSet; |
+ |
+// Returns YES if both decks should be visible. |
+- (BOOL)bothDecksShouldBeDisplayed; |
+ |
+// Returns the region, in scroll view coordinates, of the inactive deck. |
+- (CGRect)inactiveDeckRegion; |
+ |
+// The currently active card set. |
+@property(nonatomic, readonly) CardSet* activeCardSet; |
+ |
+// The current transition style. |
+@property(nonatomic, assign) StackTransitionStyle transitionStyle; |
+ |
+// Will be set to YES when a transition animation is cancelled before it can |
+// finish. |
+@property(nonatomic, assign) BOOL transitionWasCancelled; |
+ |
+// The owner of |transitionToolbarController|. |
+@property(nonatomic, retain) id<ToolbarOwner> transitionToolbarOwner; |
+ |
+// The toolbar controller used in transition animations. |
+@property(nonatomic, retain) ToolbarController* transitionToolbarController; |
+ |
+// The dummy view used in the transition animation. |
+@property(nonatomic, retain) UIView* dummyToolbarBackgroundView; |
+ |
+// The cached frame of the transition toolbar's frame. |
+@property(nonatomic, assign) CGRect transitionToolbarFrame; |
+ |
+// Records which card was tapped mid-presentation animation, if any. |
+// TODO(crbug.com/546209): Implement reversed animations for dismissing with a |
+// new selected card mid-presentation. |
+@property(nonatomic, retain) StackCard* transitionTappedCard; |
+ |
+// |YES| if there is card set animation being processed. |
+@property(nonatomic, readonly) BOOL inActiveDeckChangeAnimation; |
+ |
+@end |
+ |
+@interface StackViewController (Testing) |
+ |
+// The driver of scroll events. |
+@property(nonatomic, readonly) UIScrollView* scrollView; |
+ |
+@end |
+ |
+#endif // IOS_CHROME_BROWSER_UI_STACK_VIEW_STACK_VIEW_CONTROLLER_PRIVATE_H_ |