1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "ios/chrome/browser/infobars/infobar_controller.h"
7 #include "base/logging.h"
8 #include "base/memory/scoped_ptr.h"
9 #import "ios/public/provider/chrome/browser/ui/infobar_view_protocol.h"
11 @interface InfoBarController () {
12 base::scoped_nsobject<UIView<InfoBarViewProtocol>> _infoBarView;
16 @implementation InfoBarController
17 @synthesize delegate = _delegate;
19 - (instancetype)initWithDelegate:(InfoBarViewDelegate*)delegate {
29 [_infoBarView removeFromSuperview];
34 return CGRectGetHeight([_infoBarView frame]);
37 - (void)layoutForDelegate:(infobars::InfoBarDelegate*)delegate
38 frame:(CGRect)bounds {
39 DCHECK(!_infoBarView);
40 _infoBarView = [self viewForDelegate:delegate frame:bounds];
43 - (base::scoped_nsobject<UIView<InfoBarViewProtocol>>)
44 viewForDelegate:(infobars::InfoBarDelegate*)delegate
45 frame:(CGRect)bounds {
46 // Must be overriden in subclasses.
51 - (void)onHeightsRecalculated:(int)newHeight {
52 [_infoBarView setVisibleHeight:newHeight];
55 - (UIView<InfoBarViewProtocol>*)view {
60 [_infoBarView removeFromSuperview];
64 [_infoBarView resetDelegate];