- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / cocoa / about_ipc_controller.h
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_