Home | History | Annotate | Download | only in cocoa
      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/GTM/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