1 // Copyright (c) 2011 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. 4 5 #ifndef CHROME_BROWSER_UI_COCOA_DEV_TOOLS_CONTROLLER_H_ 6 #define CHROME_BROWSER_UI_COCOA_DEV_TOOLS_CONTROLLER_H_ 7 #pragma once 8 9 #import <Foundation/Foundation.h> 10 11 #include "base/memory/scoped_nsobject.h" 12 #import "chrome/browser/ui/cocoa/tab_contents/tab_contents_controller.h" 13 14 @class NSSplitView; 15 @class NSView; 16 17 class Profile; 18 class TabContents; 19 20 // A class that handles updates of the devTools view within a browser window. 21 // It swaps in the relevant devTools contents for a given TabContents or removes 22 // the view, if there's no devTools contents to show. 23 @interface DevToolsController : NSObject { 24 @private 25 // A view hosting docked devTools contents. 26 scoped_nsobject<NSSplitView> splitView_; 27 28 // Manages currently displayed devTools contents. 29 scoped_nsobject<TabContentsController> contentsController_; 30 } 31 32 - (id)initWithDelegate:(id<TabContentsControllerDelegate>)delegate; 33 34 // This controller's view. 35 - (NSView*)view; 36 37 // The compiler seems to have trouble handling a function named "view" that 38 // returns an NSSplitView, so provide a differently-named method. 39 - (NSSplitView*)splitView; 40 41 // Depending on |contents|'s state, decides whether the docked web inspector 42 // should be shown or hidden and adjusts its height (|delegate_| handles 43 // the actual resize). 44 - (void)updateDevToolsForTabContents:(TabContents*)contents 45 withProfile:(Profile*)profile; 46 47 // Call when the devTools view is properly sized and the render widget host view 48 // should be put into the view hierarchy. 49 - (void)ensureContentsVisible; 50 51 @end 52 53 #endif // CHROME_BROWSER_UI_COCOA_DEV_TOOLS_CONTROLLER_H_ 54