• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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