| // Copyright 2013 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 CHROME_BROWSER_UI_COCOA_AUTOFILL_AUTOFILL_LAYOUT_H_ |
| #define CHROME_BROWSER_UI_COCOA_AUTOFILL_AUTOFILL_LAYOUT_H_ |
| |
| #import <Cocoa/Cocoa.h> |
| |
| // Defines a protocol that allows resizing a view hierarchy based on the size |
| // requirements of the subviews. Is implemented by either views or view |
| // controllers. |
| // The way this works together is: |
| // * Subview indicates by calling -requestRelayout on the window controller. |
| // * Window controller queries subviews for preferredSize to determine the |
| // total size of the contentView, adjusts subview origins appropriately, |
| // and calls performLayout on each subview. |
| // * Subviews then recursively do the same thing. |
| @protocol AutofillLayout |
| |
| // Query the preferred size, without actually layouting. |
| // Akin to -intrinsicContentSize on 10.7 |
| - (NSSize)preferredSize; |
| |
| // Layout the content according to the preferred size. Will not touch |
| // frameOrigin. If all objects in the hierarchy were custom views (and not |
| // view controllers), this could be replaced by overriding |
| // -resizeSubviewsWithOldSize:. |
| - (void)performLayout; |
| |
| @end |
| |
| #endif // CHROME_BROWSER_UI_COCOA_AUTOFILL_AUTOFILL_LAYOUT_H_ |