No longer register app window placement preference keys on
[chromium-blink-merge.git] / chrome / browser / ui / cocoa / version_independent_window.h
blob24acce17741f75d1f7d763cb4001797dbe09ffb8
1 // Copyright 2014 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 #ifndef CHROME_BROWSER_UI_COCOA_VERSION_INDEPENDENT_WINDOW_H_
6 #define CHROME_BROWSER_UI_COCOA_VERSION_INDEPENDENT_WINDOW_H_
8 #import "chrome/browser/ui/cocoa/chrome_event_processing_window.h"
10 #include "base/mac/scoped_nsobject.h"
12 @interface NSWindow (VersionIndependentWindow)
14 // Returns the NSView closest to the root of the NSView hierarchy that is
15 // eligible for adding subviews.
16 // The frame of the view in screen coordinates is coincident with the window's
17 // frame in screen coordinates.
18 - (NSView*)cr_windowView;
20 @end
22 // In OSX 10.10, adding subviews to the root view for the NSView hierarchy
23 // produces warnings. To eliminate the warnings, we resize the contentView to
24 // fill the window, and add subviews to that. When this class is used on OSX
25 // 10.9 and lower, subviews are added directly to the root view, and the
26 // contentView is not resized.
27 // http://crbug.com/380412
29 // For code to be 10.9 and 10.10 compatible, views should be added to [window
30 // cr_windowView] instead of [[window contentView] superview].
32 // If the window does not have a titlebar, then its contentView already has the
33 // same size as the window. In this case, this class has no effect.
35 // This class currently does not support changing the window's style after the
36 // window has been initialized.
38 // Since the contentView's size varies between OSes, several NSWindow methods
39 // are no longer well defined.
40 // - setContentSize:
41 // - setContentMinSize:
42 // - setContentMaxSize:
43 // - setContentAspectRatio:
44 // The implementation of this class on OSX 10.10 uses a hacked subclass of
45 // NSView. It currently does not support the above 4 methods.
46 @interface VersionIndependentWindow : ChromeEventProcessingWindow {
47 @private
48 // Holds the view that replaces [window contentView]. This view's size is the
49 // same as the window's size.
50 // Empty on 10.9 and lower, or if there is no titlebar.
51 base::scoped_nsobject<NSView> chromeWindowView_;
54 // Designated initializer.
55 - (instancetype)initWithContentRect:(NSRect)contentRect
56 styleMask:(NSUInteger)windowStyle
57 backing:(NSBackingStoreType)bufferingType
58 defer:(BOOL)deferCreation;
60 @end
62 #endif // CHROME_BROWSER_UI_COCOA_VERSION_INDEPENDENT_WINDOW_H_