Index: ios/chrome/browser/upgrade/upgrade_center.h |
diff --git a/ios/chrome/browser/upgrade/upgrade_center.h b/ios/chrome/browser/upgrade/upgrade_center.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a9ee57fc20421d2ea147d2c6f44977ea2a8cc543 |
--- /dev/null |
+++ b/ios/chrome/browser/upgrade/upgrade_center.h |
@@ -0,0 +1,62 @@ |
+// Copyright (c) 2012 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_UPGRADE_UPGRADE_CENTER_H_ |
+#define IOS_CHROME_BROWSER_UPGRADE_UPGRADE_CENTER_H_ |
+ |
+#import <UIKit/UIKit.h> |
+ |
+#include "ios/chrome/browser/upgrade/upgrade_recommended_details.h" |
+ |
+@class UpgradeCenter; |
+ |
+namespace infobars { |
+class InfoBarManager; |
+} |
+ |
+@protocol UpgradeCenterClientProtocol |
+ |
+// This is expected to call -addInfoBarToHelper:forTabId: for each tab to place |
+// the infobars in the UI. The client must not unregister itself while in this |
+// method. |
+- (void)showUpgrade:(UpgradeCenter*)center; |
+ |
+@end |
+ |
+@interface UpgradeCenter : NSObject |
+ |
+// Returns the singleton instance of the class. |
++ (UpgradeCenter*)sharedInstance; |
+ |
+// Registers a client for the UpgradeCenter. The clients are not retained, |
+// unregisterClient: must be called before the object goes away. |
+- (void)registerClient:(id<UpgradeCenterClientProtocol>)client; |
+ |
+// Unregisters a client. |
+- (void)unregisterClient:(id<UpgradeCenterClientProtocol>)client; |
+ |
+// Clients should call this method when -showUpgrade: is called or when a new |
+// tab is created. The infobar will not be created if it already exists or if |
+// there is no need to do so. |
+- (void)addInfoBarToManager:(infobars::InfoBarManager*)infoBarManager |
+ forTabId:(NSString*)tabId; |
+ |
+// For the UpgradeCenter to make the distinction between an infobar closed by |
+// the user directly and an infobar dismissed because the Tab it is on is |
+// removed. |
+- (void)tabWillClose:(NSString*)tabId; |
+ |
+// Called when a notification is received from one of the upgrade mechanism. |
+- (void)upgradeNotificationDidOccur:(const UpgradeRecommendedDetails&)details; |
+ |
+@end |
+ |
+@interface UpgradeCenter (UsedForTests) |
+// Reset everything (forget clients, remove the infobar everywhere...) |
+- (void)resetForTests; |
+// Simulate the minimum display interval having elapsed. |
+- (void)setLastDisplayToPast; |
+@end |
+ |
+#endif // IOS_CHROME_BROWSER_UPGRADE_UPGRADE_CENTER_H_ |