Index: chrome/browser/ui/cocoa/sidebar_controller.h |
diff --git a/chrome/browser/ui/cocoa/sidebar_controller.h b/chrome/browser/ui/cocoa/sidebar_controller.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8976d9a0475645fdc9d3cbbd1af9c09faa2ba1a7 |
--- /dev/null |
+++ b/chrome/browser/ui/cocoa/sidebar_controller.h |
@@ -0,0 +1,49 @@ |
+// Copyright (c) 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 CHROME_BROWSER_UI_COCOA_SIDEBAR_CONTROLLER_H_ |
+#define CHROME_BROWSER_UI_COCOA_SIDEBAR_CONTROLLER_H_ |
+ |
+#import "base/mac/cocoa_protocols.h" |
+#include "base/mac/scoped_nsobject.h" |
+#import "chrome/browser/ui/cocoa/tab_contents/tab_contents_controller.h" |
+ |
+@class NSSplitView; |
+@class NSView; |
+namespace content { |
+class BrowserContext; |
+class WebContents; |
+} |
+ |
+// A class that handles updates of the sidebar view within a browser window. |
+// It swaps in the relevant sidebar contents for a given TabContents or removes |
+// the vew, if there's no sidebar contents to show. |
+@interface SidebarController : NSObject<NSSplitViewDelegate> { |
+ @private |
+ // A view hosting sidebar contents. |
+ base::scoped_nsobject<NSSplitView> splitView_; |
+ |
+ // Manages currently displayed sidebar contents. |
+ base::scoped_nsobject<TabContentsController> contentsController_; |
+} |
+ |
+- (id)initWithParentViewController:(id)parentController |
+ andContentsController:(id)contentsController; |
+ |
+// This controller's view. |
+- (NSSplitView*)view; |
+ |
+// Depending on |contents|'s state, decides whether the sidebar |
+// should be shown or hidden and adjusts its width (|delegate_| handles |
+// the actual resize). |
+- (void)updateSidebarForTabContents:(content::WebContents*)contents |
+ withContext:(content::BrowserContext*)context; |
+ |
+// Call when the sidebar view is properly sized and the render widget host view |
+// should be put into the view hierarchy. |
+- (void)ensureContentsVisible; |
+ |
+@end |
+ |
+#endif // CHROME_BROWSER_UI_COCOA_SIDEBAR_CONTROLLER_H_ |