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 #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