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