Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(128)

Unified Diff: ios/chrome/browser/ui/tab_switcher/tab_switcher.h

Issue 2588733002: Upstream Chrome on iOS source code [9/11]. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ios/chrome/browser/ui/tab_switcher/tab_switcher.h
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_switcher.h b/ios/chrome/browser/ui/tab_switcher/tab_switcher.h
new file mode 100644
index 0000000000000000000000000000000000000000..5f3934d36c8c38f06edfcbccafaa69d56eb7ff88
--- /dev/null
+++ b/ios/chrome/browser/ui/tab_switcher/tab_switcher.h
@@ -0,0 +1,94 @@
+// 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_TAB_SWITCHER_TAB_SWITCHER_H_
+#define IOS_CHROME_BROWSER_UI_TAB_SWITCHER_TAB_SWITCHER_H_
+
+#import <UIKit/UIKit.h>
+
+#import "ios/chrome/browser/ui/commands/UIKit+ChromeExecuteCommand.h"
+#include "ios/chrome/browser/ui/tab_switcher/tab_switcher_transition_context.h"
+#include "ui/base/page_transition_types.h"
+#include "url/gurl.h"
+
+@class Tab;
+@class TabModel;
+@protocol TabSwitcher;
+@protocol ToolbarOwner;
+
+// This delegate is used to drive the TabSwitcher dismissal and execute code
+// when the presentation and dismmiss animations finishes. The main controller
+// is a good exemple of the implementation of this delegate.
+@protocol TabSwitcherDelegate<NSObject>
+
+// Informs the delegate the stack controller is starting to be dismissed with
+// the given model active.
+- (void)tabSwitcher:(id<TabSwitcher>)tabSwitcher
+ dismissTransitionWillStartWithActiveModel:(TabModel*)tabModel;
+
+// Informs the delegate that the stack controller is done and should be
+// dismissed.
+- (void)tabSwitcherDismissTransitionDidEnd:(id<TabSwitcher>)tabSwitcher;
+
+// Informs the delegate that the stack controller has finished its
+// presentation transition animation.
+- (void)tabSwitcherPresentationTransitionDidEnd:(id<TabSwitcher>)tabSwitcher;
+
+// Returns a reference to the owner of the toolbar that should be used in the
+// transition animations.
+- (id<ToolbarOwner>)tabSwitcherTransitionToolbarOwner;
+
+@end
+
+// This protocol describes the common interface between the two implementations
+// of the tab switcher. StackViewController for iPhone and TabSwitcherController
+// for iPad are examples of implementers of this protocol.
+@protocol TabSwitcher
+
+// This delegate must be set on the tab switcher in order to drive the tab
+// switcher.
+@property(nonatomic, assign) id<TabSwitcherDelegate> delegate;
+
+// Restores the internal state of the tab switcher with the given tab models,
+// which must not be nil. |activeTabModel| is the model which starts active,
+// and must be one of the other two models. Should only be called when the
+// object is not being shown.
+- (void)restoreInternalStateWithMainTabModel:(TabModel*)mainModel
+ otrTabModel:(TabModel*)otrModel
+ activeTabModel:(TabModel*)activeModel;
+
+// Returns the root view of the tab switcher.
+- (UIView*)view;
+
+// Performs an animation of the selected tab from its presented state to its
+// place in the tab switcher. Should be called after the tab switcher's view has
+// been presented.
+- (void)showWithSelectedTabAnimation;
+
+// Performs an animation from the selected tab in the tab switcher to the
+// presented tab in the content area. When the animation completes, calls the
+// delegate methods:
+// |-tabSwitcher:dismissTransitionWillStartWithActiveModel:| and
+// |-tabSwitcherDismissTransitionDidEnd:|
+- (Tab*)dismissWithNewTabAnimationToModel:(TabModel*)targetModel
+ withURL:(const GURL&)url
+ atIndex:(NSUInteger)position
+ transition:(ui::PageTransition)transition;
+
+// Updates the OTR (Off The Record) tab model. Should only be called when both
+// the current OTR tab model and the new OTR tab model are either nil or contain
+// no tabs. This must be called after the otr tab model has been deleted because
+// the incognito browser state is deleted.
+- (void)setOtrTabModel:(TabModel*)otrModel;
+
+@optional
+@property(nonatomic, retain) TabSwitcherTransitionContext* transitionContext;
+
+// Dismisses the tab switcher using the given tab model. The dismissal of the
+// tab switcher will be animated if the |animated| parameter is set to YES.
+- (void)tabSwitcherDismissWithModel:(TabModel*)model animated:(BOOL)animated;
+
+@end
+
+#endif // IOS_CHROME_BROWSER_UI_TAB_SWITCHER_TAB_SWITCHER_H_

Powered by Google App Engine
This is Rietveld 408576698