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_ABOUT_IPC_CONTROLLER_H_ 6 #define CHROME_BROWSER_UI_COCOA_ABOUT_IPC_CONTROLLER_H_ 7 #pragma once 8 9 #import <Cocoa/Cocoa.h> 10 11 #include "base/memory/scoped_ptr.h" 12 #include "ipc/ipc_logging.h" 13 #include "ipc/ipc_message_utils.h" 14 #include "third_party/GTM/Foundation/GTMRegex.h" 15 16 // Must be included after IPC_MESSAGE_LOG_ENABLED gets defined 17 #import "chrome/browser/ui/cocoa/about_ipc_dialog.h" 18 19 #if defined(IPC_MESSAGE_LOG_ENABLED) 20 21 // An objc wrapper for IPC::LogData to allow use of Cocoa bindings. 22 @interface CocoaLogData : NSObject { 23 @private 24 IPC::LogData data_; 25 } 26 - (id)initWithLogData:(const IPC::LogData&)data; 27 @end 28 29 30 // A window controller that handles the about:ipc non-modal dialog. 31 @interface AboutIPCController : NSWindowController { 32 @private 33 scoped_ptr<AboutIPCBridge> bridge_; 34 IBOutlet NSButton* startStopButton_; 35 IBOutlet NSTableView* tableView_; 36 IBOutlet NSArrayController* dataController_; 37 IBOutlet NSTextField* eventCount_; 38 IBOutlet NSTextField* filteredEventCount_; 39 IBOutlet NSTextField* userStringTextField1_; 40 IBOutlet NSTextField* userStringTextField2_; 41 IBOutlet NSTextField* userStringTextField3_; 42 // Count of filtered events. 43 int filteredEventCounter_; 44 // Cocoa-bound to check boxes for filtering messages. 45 // Each BOOL allows events that have that name prefix. 46 // E.g. if set, appCache_ allows events named AppCache*. 47 // The actual string to match is defined in the xib. 48 // The userStrings allow a user-specified prefix. 49 BOOL appCache_; 50 BOOL view_; 51 BOOL utilityHost_; 52 BOOL viewHost_; 53 BOOL plugin_; 54 BOOL npObject_; 55 BOOL devTools_; 56 BOOL pluginProcessing_; 57 BOOL userString1_; 58 BOOL userString2_; 59 BOOL userString3_; 60 } 61 62 + (AboutIPCController*)sharedController; 63 64 - (IBAction)startStop:(id)sender; 65 - (IBAction)clear:(id)sender; 66 67 // Called from our C++ bridge class. To accomodate multithreaded 68 // ownership issues, this method ACCEPTS OWNERSHIP of the arg passed 69 // in. 70 - (void)log:(CocoaLogData*)data; 71 72 // Update visible state (e.g. Start/Stop button) based on logging run 73 // state. Does not change state. 74 - (void)updateVisibleRunState; 75 76 @end 77 78 @interface AboutIPCController(TestingAPI) 79 - (BOOL)filterOut:(CocoaLogData*)data; 80 - (void)setDisplayViewMessages:(BOOL)display; 81 @end 82 83 #endif // IPC_MESSAGE_LOG_ENABLED 84 #endif // CHROME_BROWSER_UI_COCOA_ABOUT_IPC_CONTROLLER_H_ 85