diff options
author | jrg@chromium.org <jrg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-28 21:08:04 +0000 |
---|---|---|
committer | jrg@chromium.org <jrg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-28 21:08:04 +0000 |
commit | d55aaa139da94452ebd6812bfa9241ba050978d9 (patch) | |
tree | c5fd3ad94b96114b9109fc92610cae3b9688014b /chrome | |
parent | 50e8299eb26f3a289c35badb7e740eb109981cd1 (diff) | |
download | chromium_src-d55aaa139da94452ebd6812bfa9241ba050978d9.zip chromium_src-d55aaa139da94452ebd6812bfa9241ba050978d9.tar.gz chromium_src-d55aaa139da94452ebd6812bfa9241ba050978d9.tar.bz2 |
Implement about:ipc dialog for Mac.
Convert IPC logging trigger from x-process waitable event to a messages
sent to all processes.
Review URL: http://codereview.chromium.org/192070
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27405 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
25 files changed, 3190 insertions, 41 deletions
diff --git a/chrome/app/nibs/AboutIPC.xib b/chrome/app/nibs/AboutIPC.xib new file mode 100644 index 0000000..b943f80 --- /dev/null +++ b/chrome/app/nibs/AboutIPC.xib @@ -0,0 +1,2583 @@ +<?xml version="1.0" encoding="UTF-8"?> +<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10"> + <data> + <int key="IBDocument.SystemTarget">1050</int> + <string key="IBDocument.SystemVersion">10A432</string> + <string key="IBDocument.InterfaceBuilderVersion">732</string> + <string key="IBDocument.AppKitVersion">1038</string> + <string key="IBDocument.HIToolboxVersion">437.00</string> + <object class="NSMutableDictionary" key="IBDocument.PluginVersions"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="NS.object.0">732</string> + </object> + <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> + <bool key="EncodedWithXMLCoder">YES</bool> + <integer value="1"/> + </object> + <object class="NSArray" key="IBDocument.PluginDependencies"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + </object> + <object class="NSMutableDictionary" key="IBDocument.Metadata"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys" id="0"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSCustomObject" id="1001"> + <string key="NSClassName">AboutIPCController</string> + </object> + <object class="NSCustomObject" id="1003"> + <string key="NSClassName">FirstResponder</string> + </object> + <object class="NSCustomObject" id="1004"> + <string key="NSClassName">NSApplication</string> + </object> + <object class="NSWindowTemplate" id="1005"> + <int key="NSWindowStyleMask">15</int> + <int key="NSWindowBacking">2</int> + <string key="NSWindowRect">{{68, 1231}, {946, 321}}</string> + <int key="NSWTFlags">544735232</int> + <string key="NSWindowTitle">about:ipc</string> + <string key="NSWindowClass">NSWindow</string> + <nil key="NSViewClass"/> + <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string> + <string key="NSWindowContentMinSize">{946, 321}</string> + <object class="NSView" key="NSWindowView" id="1006"> + <reference key="NSNextResponder"/> + <int key="NSvFlags">256</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSButton" id="1024951726"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">289</int> + <string key="NSFrame">{{740, 12}, {96, 32}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="939136037"> + <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags2">134217728</int> + <string key="NSContents">Start</string> + <object class="NSFont" key="NSSupport" id="839892825"> + <string key="NSName">LucidaGrande</string> + <double key="NSSize">13</double> + <int key="NSfFlags">1044</int> + </object> + <reference key="NSControlView" ref="1024951726"/> + <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags2">129</int> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + <object class="NSButton" id="270096373"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">289</int> + <string key="NSFrame">{{836, 12}, {96, 32}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="829055934"> + <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags2">134217728</int> + <string key="NSContents">Clear</string> + <reference key="NSSupport" ref="839892825"/> + <reference key="NSControlView" ref="270096373"/> + <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags2">129</int> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + <object class="NSScrollView" id="98924657"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">274</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSClipView" id="521807537"> + <reference key="NSNextResponder" ref="98924657"/> + <int key="NSvFlags">2304</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSTableView" id="493623503"> + <reference key="NSNextResponder" ref="521807537"/> + <int key="NSvFlags">256</int> + <string key="NSFrameSize">{904, 172}</string> + <reference key="NSSuperview" ref="521807537"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTableHeaderView" key="NSHeaderView" id="1005294920"> + <reference key="NSNextResponder" ref="855547419"/> + <int key="NSvFlags">256</int> + <string key="NSFrameSize">{904, 17}</string> + <reference key="NSSuperview" ref="855547419"/> + <reference key="NSTableView" ref="493623503"/> + </object> + <object class="_NSCornerView" key="NSCornerView" id="567849339"> + <reference key="NSNextResponder" ref="98924657"/> + <int key="NSvFlags">-2147483392</int> + <string key="NSFrame">{{890, 0}, {16, 17}}</string> + <reference key="NSSuperview" ref="98924657"/> + </object> + <object class="NSMutableArray" key="NSTableColumns"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSTableColumn" id="238645834"> + <string key="NSIdentifier">0</string> + <double key="NSWidth">94</double> + <double key="NSMinWidth">40</double> + <double key="NSMaxWidth">1000</double> + <object class="NSTableHeaderCell" key="NSHeaderCell"> + <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags2">2048</int> + <string key="NSContents">Time</string> + <object class="NSFont" key="NSSupport" id="26"> + <string key="NSName">LucidaGrande</string> + <double key="NSSize">11</double> + <int key="NSfFlags">3100</int> + </object> + <object class="NSColor" key="NSBackgroundColor" id="703945268"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes> + </object> + <object class="NSColor" key="NSTextColor" id="272087706"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">headerTextColor</string> + <object class="NSColor" key="NSColor" id="1014173410"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MAA</bytes> + </object> + </object> + </object> + <object class="NSTextFieldCell" key="NSDataCell" id="423320335"> + <int key="NSCellFlags">337772096</int> + <int key="NSCellFlags2">2048</int> + <string key="NSContents">Text Cell</string> + <reference key="NSSupport" ref="839892825"/> + <reference key="NSControlView" ref="493623503"/> + <object class="NSColor" key="NSBackgroundColor" id="150175725"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">controlBackgroundColor</string> + <object class="NSColor" key="NSColor" id="430184259"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes> + </object> + </object> + <object class="NSColor" key="NSTextColor" id="212665692"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">controlTextColor</string> + <reference key="NSColor" ref="1014173410"/> + </object> + </object> + <int key="NSResizingMask">3</int> + <bool key="NSIsResizeable">YES</bool> + <reference key="NSTableView" ref="493623503"/> + </object> + <object class="NSTableColumn" id="277179295"> + <string key="NSIdentifier">1</string> + <double key="NSWidth">108</double> + <double key="NSMinWidth">40</double> + <double key="NSMaxWidth">1000</double> + <object class="NSTableHeaderCell" key="NSHeaderCell"> + <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags2">2048</int> + <string key="NSContents">Channel</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSBackgroundColor" ref="703945268"/> + <reference key="NSTextColor" ref="272087706"/> + </object> + <object class="NSTextFieldCell" key="NSDataCell" id="310532082"> + <int key="NSCellFlags">337772096</int> + <int key="NSCellFlags2">2048</int> + <string key="NSContents">Text Cell</string> + <reference key="NSSupport" ref="839892825"/> + <reference key="NSControlView" ref="493623503"/> + <reference key="NSBackgroundColor" ref="150175725"/> + <reference key="NSTextColor" ref="212665692"/> + </object> + <int key="NSResizingMask">3</int> + <bool key="NSIsResizeable">YES</bool> + <reference key="NSTableView" ref="493623503"/> + </object> + <object class="NSTableColumn" id="1025181063"> + <string key="NSIdentifier">2</string> + <double key="NSWidth">195</double> + <double key="NSMinWidth">10</double> + <double key="NSMaxWidth">3.4028234663852886e+38</double> + <object class="NSTableHeaderCell" key="NSHeaderCell"> + <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags2">2048</int> + <string key="NSContents">Message</string> + <reference key="NSSupport" ref="26"/> + <object class="NSColor" key="NSBackgroundColor" id="353058168"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">headerColor</string> + <object class="NSColor" key="NSColor" id="193056335"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MQA</bytes> + </object> + </object> + <reference key="NSTextColor" ref="272087706"/> + </object> + <object class="NSTextFieldCell" key="NSDataCell" id="928723114"> + <int key="NSCellFlags">337772096</int> + <int key="NSCellFlags2">2048</int> + <string key="NSContents">Text Cell</string> + <reference key="NSSupport" ref="839892825"/> + <reference key="NSControlView" ref="493623503"/> + <reference key="NSBackgroundColor" ref="150175725"/> + <reference key="NSTextColor" ref="212665692"/> + </object> + <int key="NSResizingMask">3</int> + <bool key="NSIsResizeable">YES</bool> + <reference key="NSTableView" ref="493623503"/> + </object> + <object class="NSTableColumn" id="983835171"> + <string key="NSIdentifier">3</string> + <double key="NSWidth">49</double> + <double key="NSMinWidth">10</double> + <double key="NSMaxWidth">3.4028234663852886e+38</double> + <object class="NSTableHeaderCell" key="NSHeaderCell"> + <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags2">2048</int> + <string key="NSContents">Flags</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSBackgroundColor" ref="353058168"/> + <reference key="NSTextColor" ref="272087706"/> + </object> + <object class="NSTextFieldCell" key="NSDataCell" id="854180196"> + <int key="NSCellFlags">337772096</int> + <int key="NSCellFlags2">2048</int> + <string key="NSContents">Text Cell</string> + <reference key="NSSupport" ref="839892825"/> + <reference key="NSControlView" ref="493623503"/> + <reference key="NSBackgroundColor" ref="150175725"/> + <reference key="NSTextColor" ref="212665692"/> + </object> + <int key="NSResizingMask">3</int> + <bool key="NSIsResizeable">YES</bool> + <reference key="NSTableView" ref="493623503"/> + </object> + <object class="NSTableColumn" id="756023669"> + <string key="NSIdentifier">4</string> + <double key="NSWidth">81</double> + <double key="NSMinWidth">10</double> + <double key="NSMaxWidth">3.4028234663852886e+38</double> + <object class="NSTableHeaderCell" key="NSHeaderCell"> + <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags2">2048</int> + <string key="NSContents">Dispatch (ms)</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSBackgroundColor" ref="353058168"/> + <reference key="NSTextColor" ref="272087706"/> + </object> + <object class="NSTextFieldCell" key="NSDataCell" id="227299625"> + <int key="NSCellFlags">337772096</int> + <int key="NSCellFlags2">2048</int> + <string key="NSContents">Text Cell</string> + <reference key="NSSupport" ref="839892825"/> + <reference key="NSControlView" ref="493623503"/> + <reference key="NSBackgroundColor" ref="150175725"/> + <reference key="NSTextColor" ref="212665692"/> + </object> + <int key="NSResizingMask">3</int> + <bool key="NSIsResizeable">YES</bool> + <reference key="NSTableView" ref="493623503"/> + </object> + <object class="NSTableColumn" id="325673043"> + <string key="NSIdentifier">5</string> + <double key="NSWidth">75</double> + <double key="NSMinWidth">10</double> + <double key="NSMaxWidth">3.4028234663852886e+38</double> + <object class="NSTableHeaderCell" key="NSHeaderCell"> + <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags2">2048</int> + <string key="NSContents">Process (ms)</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSBackgroundColor" ref="353058168"/> + <reference key="NSTextColor" ref="272087706"/> + </object> + <object class="NSTextFieldCell" key="NSDataCell" id="857967550"> + <int key="NSCellFlags">337772096</int> + <int key="NSCellFlags2">2048</int> + <string key="NSContents">Text Cell</string> + <reference key="NSSupport" ref="839892825"/> + <reference key="NSControlView" ref="493623503"/> + <reference key="NSBackgroundColor" ref="150175725"/> + <reference key="NSTextColor" ref="212665692"/> + </object> + <int key="NSResizingMask">3</int> + <bool key="NSIsResizeable">YES</bool> + <reference key="NSTableView" ref="493623503"/> + </object> + <object class="NSTableColumn" id="933394012"> + <string key="NSIdentifier">6</string> + <double key="NSWidth">281</double> + <double key="NSMinWidth">10</double> + <double key="NSMaxWidth">3.4028234663852886e+38</double> + <object class="NSTableHeaderCell" key="NSHeaderCell"> + <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags2">2048</int> + <string key="NSContents">Parameters</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSBackgroundColor" ref="353058168"/> + <reference key="NSTextColor" ref="272087706"/> + </object> + <object class="NSTextFieldCell" key="NSDataCell" id="793253328"> + <int key="NSCellFlags">337772096</int> + <int key="NSCellFlags2">2048</int> + <string key="NSContents">Text Cell</string> + <reference key="NSSupport" ref="839892825"/> + <reference key="NSControlView" ref="493623503"/> + <reference key="NSBackgroundColor" ref="150175725"/> + <reference key="NSTextColor" ref="212665692"/> + </object> + <int key="NSResizingMask">3</int> + <bool key="NSIsResizeable">YES</bool> + <reference key="NSTableView" ref="493623503"/> + </object> + </object> + <double key="NSIntercellSpacingWidth">3</double> + <double key="NSIntercellSpacingHeight">2</double> + <reference key="NSBackgroundColor" ref="193056335"/> + <object class="NSColor" key="NSGridColor"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">gridColor</string> + <object class="NSColor" key="NSColor"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MC41AA</bytes> + </object> + </object> + <double key="NSRowHeight">17</double> + <int key="NSTvFlags">-566231040</int> + <reference key="NSDelegate"/> + <reference key="NSDataSource"/> + <int key="NSColumnAutoresizingStyle">4</int> + <int key="NSDraggingSourceMaskForLocal">15</int> + <int key="NSDraggingSourceMaskForNonLocal">0</int> + <bool key="NSAllowsTypeSelect">YES</bool> + <int key="NSTableViewDraggingDestinationStyle">0</int> + </object> + </object> + <string key="NSFrame">{{1, 17}, {904, 172}}</string> + <reference key="NSSuperview" ref="98924657"/> + <reference key="NSNextKeyView" ref="493623503"/> + <reference key="NSDocView" ref="493623503"/> + <reference key="NSBGColor" ref="150175725"/> + <int key="NScvFlags">4</int> + </object> + <object class="NSScroller" id="95866814"> + <reference key="NSNextResponder" ref="98924657"/> + <int key="NSvFlags">-2147483392</int> + <string key="NSFrame">{{890, 17}, {15, 157}}</string> + <reference key="NSSuperview" ref="98924657"/> + <reference key="NSTarget" ref="98924657"/> + <string key="NSAction">_doScroller:</string> + <double key="NSPercent">0.91279069767441856</double> + </object> + <object class="NSScroller" id="272438547"> + <reference key="NSNextResponder" ref="98924657"/> + <int key="NSvFlags">-2147483392</int> + <string key="NSFrame">{{1, 174}, {904, 15}}</string> + <reference key="NSSuperview" ref="98924657"/> + <int key="NSsFlags">1</int> + <reference key="NSTarget" ref="98924657"/> + <string key="NSAction">_doScroller:</string> + <double key="NSPercent">0.99889502762430937</double> + </object> + <object class="NSClipView" id="855547419"> + <reference key="NSNextResponder" ref="98924657"/> + <int key="NSvFlags">2304</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="1005294920"/> + </object> + <string key="NSFrame">{{1, 0}, {904, 17}}</string> + <reference key="NSSuperview" ref="98924657"/> + <reference key="NSNextKeyView" ref="1005294920"/> + <reference key="NSDocView" ref="1005294920"/> + <reference key="NSBGColor" ref="150175725"/> + <int key="NScvFlags">4</int> + </object> + <reference ref="567849339"/> + </object> + <string key="NSFrame">{{20, 111}, {906, 190}}</string> + <reference key="NSSuperview" ref="1006"/> + <reference key="NSNextKeyView" ref="521807537"/> + <int key="NSsFlags">562</int> + <reference key="NSVScroller" ref="95866814"/> + <reference key="NSHScroller" ref="272438547"/> + <reference key="NSContentView" ref="521807537"/> + <reference key="NSHeaderClipView" ref="855547419"/> + <reference key="NSCornerView" ref="567849339"/> + <bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes> + </object> + <object class="NSTextField" id="786536229"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">292</int> + <string key="NSFrame">{{17, 65}, {62, 17}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="275812073"> + <int key="NSCellFlags">68288064</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">Logged:</string> + <reference key="NSSupport" ref="839892825"/> + <reference key="NSControlView" ref="786536229"/> + <object class="NSColor" key="NSBackgroundColor" id="374235803"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">controlColor</string> + <reference key="NSColor" ref="430184259"/> + </object> + <reference key="NSTextColor" ref="212665692"/> + </object> + </object> + <object class="NSTextField" id="478845374"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">292</int> + <string key="NSFrame">{{17, 86}, {97, 17}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="994055988"> + <int key="NSCellFlags">68288064</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">Events:</string> + <object class="NSFont" key="NSSupport"> + <string key="NSName">LucidaGrande-Bold</string> + <double key="NSSize">13</double> + <int key="NSfFlags">16</int> + </object> + <reference key="NSControlView" ref="478845374"/> + <reference key="NSBackgroundColor" ref="374235803"/> + <reference key="NSTextColor" ref="212665692"/> + </object> + </object> + <object class="NSTextField" id="1023302664"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">292</int> + <string key="NSFrame">{{107, 45}, {58, 17}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="886135644"> + <int key="NSCellFlags">68288064</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">0</string> + <reference key="NSSupport" ref="839892825"/> + <reference key="NSControlView" ref="1023302664"/> + <reference key="NSBackgroundColor" ref="374235803"/> + <reference key="NSTextColor" ref="212665692"/> + </object> + </object> + <object class="NSTextField" id="622353472"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">292</int> + <string key="NSFrame">{{17, 45}, {97, 17}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="251259803"> + <int key="NSCellFlags">68288064</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">filtered away:</string> + <reference key="NSSupport" ref="839892825"/> + <reference key="NSControlView" ref="622353472"/> + <reference key="NSBackgroundColor" ref="374235803"/> + <reference key="NSTextColor" ref="212665692"/> + </object> + </object> + <object class="NSTextField" id="866225217"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">292</int> + <string key="NSFrame">{{107, 65}, {58, 17}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="409428589"> + <int key="NSCellFlags">68288064</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">0</string> + <reference key="NSSupport" ref="839892825"/> + <reference key="NSControlView" ref="866225217"/> + <reference key="NSBackgroundColor" ref="374235803"/> + <reference key="NSTextColor" ref="212665692"/> + </object> + </object> + <object class="NSTextField" id="563670146"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">292</int> + <string key="NSFrame">{{191, 86}, {291, 17}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="180388177"> + <int key="NSCellFlags">68288064</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">Match these message types:</string> + <reference key="NSSupport" ref="839892825"/> + <reference key="NSControlView" ref="563670146"/> + <reference key="NSBackgroundColor" ref="374235803"/> + <reference key="NSTextColor" ref="212665692"/> + </object> + </object> + <object class="NSButton" id="5901761"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">292</int> + <string key="NSFrame">{{192, 62}, {112, 18}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="106126120"> + <int key="NSCellFlags">-2080244224</int> + <int key="NSCellFlags2">0</int> + <string key="NSContents">AppCache</string> + <reference key="NSSupport" ref="839892825"/> + <reference key="NSControlView" ref="5901761"/> + <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags2">2</int> + <object class="NSCustomResource" key="NSNormalImage" id="430860861"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">NSSwitch</string> + </object> + <object class="NSButtonImageSource" key="NSAlternateImage" id="990511366"> + <string key="NSImageName">NSSwitch</string> + </object> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + <object class="NSButton" id="810569676"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">292</int> + <string key="NSFrame">{{192, 42}, {78, 18}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="334183418"> + <int key="NSCellFlags">-2080244224</int> + <int key="NSCellFlags2">0</int> + <string key="NSContents">View</string> + <reference key="NSSupport" ref="839892825"/> + <reference key="NSControlView" ref="810569676"/> + <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags2">2</int> + <reference key="NSNormalImage" ref="430860861"/> + <reference key="NSAlternateImage" ref="990511366"/> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + <object class="NSButton" id="1002988259"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">292</int> + <string key="NSFrame">{{192, 22}, {88, 18}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="581697433"> + <int key="NSCellFlags">-2080244224</int> + <int key="NSCellFlags2">0</int> + <string key="NSContents">UtilityHost</string> + <reference key="NSSupport" ref="839892825"/> + <reference key="NSControlView" ref="1002988259"/> + <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags2">2</int> + <reference key="NSNormalImage" ref="430860861"/> + <reference key="NSAlternateImage" ref="990511366"/> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + <object class="NSButton" id="1012814957"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">292</int> + <string key="NSFrame">{{292, 62}, {81, 18}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="640384434"> + <int key="NSCellFlags">-2080244224</int> + <int key="NSCellFlags2">0</int> + <string key="NSContents">ViewHost</string> + <reference key="NSSupport" ref="839892825"/> + <reference key="NSControlView" ref="1012814957"/> + <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags2">2</int> + <reference key="NSNormalImage" ref="430860861"/> + <reference key="NSAlternateImage" ref="990511366"/> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + <object class="NSButton" id="48513448"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">292</int> + <string key="NSFrame">{{292, 42}, {87, 18}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="304633318"> + <int key="NSCellFlags">-2080244224</int> + <int key="NSCellFlags2">0</int> + <string key="NSContents">Plugin</string> + <reference key="NSSupport" ref="839892825"/> + <reference key="NSControlView" ref="48513448"/> + <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags2">2</int> + <reference key="NSNormalImage" ref="430860861"/> + <reference key="NSAlternateImage" ref="990511366"/> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + <object class="NSButton" id="28169093"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">292</int> + <string key="NSFrame">{{292, 22}, {80, 18}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="54317898"> + <int key="NSCellFlags">-2080244224</int> + <int key="NSCellFlags2">0</int> + <string key="NSContents">NPObject</string> + <reference key="NSSupport" ref="839892825"/> + <reference key="NSControlView" ref="28169093"/> + <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags2">2</int> + <reference key="NSNormalImage" ref="430860861"/> + <reference key="NSAlternateImage" ref="990511366"/> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + <object class="NSButton" id="460878671"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">292</int> + <string key="NSFrame">{{392, 62}, {81, 18}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="59436594"> + <int key="NSCellFlags">-2080244224</int> + <int key="NSCellFlags2">0</int> + <string key="NSContents">DevTools</string> + <reference key="NSSupport" ref="839892825"/> + <reference key="NSControlView" ref="460878671"/> + <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags2">2</int> + <reference key="NSNormalImage" ref="430860861"/> + <reference key="NSAlternateImage" ref="990511366"/> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + <object class="NSButton" id="904057869"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">292</int> + <string key="NSFrame">{{392, 42}, {129, 18}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="118154437"> + <int key="NSCellFlags">-2080244224</int> + <int key="NSCellFlags2">0</int> + <string key="NSContents">PluginProcessing</string> + <reference key="NSSupport" ref="839892825"/> + <reference key="NSControlView" ref="904057869"/> + <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags2">2</int> + <reference key="NSNormalImage" ref="430860861"/> + <reference key="NSAlternateImage" ref="990511366"/> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + <object class="NSButton" id="521791597"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">292</int> + <string key="NSFrame">{{525, 62}, {63, 18}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="313564618"> + <int key="NSCellFlags">-2080244224</int> + <int key="NSCellFlags2">0</int> + <string key="NSContents"/> + <reference key="NSSupport" ref="839892825"/> + <reference key="NSControlView" ref="521791597"/> + <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags2">2</int> + <reference key="NSNormalImage" ref="430860861"/> + <reference key="NSAlternateImage" ref="990511366"/> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + <object class="NSButton" id="401310256"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">292</int> + <string key="NSFrame">{{525, 42}, {63, 18}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="127509546"> + <int key="NSCellFlags">-2080244224</int> + <int key="NSCellFlags2">0</int> + <string key="NSContents"/> + <reference key="NSSupport" ref="839892825"/> + <reference key="NSControlView" ref="401310256"/> + <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags2">2</int> + <reference key="NSNormalImage" ref="430860861"/> + <reference key="NSAlternateImage" ref="990511366"/> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + <object class="NSTextField" id="534259314"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">292</int> + <string key="NSFrame">{{548, 60}, {149, 22}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="803973914"> + <int key="NSCellFlags">-1804468671</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents"/> + <reference key="NSSupport" ref="839892825"/> + <reference key="NSControlView" ref="534259314"/> + <bool key="NSDrawsBackground">YES</bool> + <object class="NSColor" key="NSBackgroundColor" id="551482984"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">textBackgroundColor</string> + <reference key="NSColor" ref="193056335"/> + </object> + <object class="NSColor" key="NSTextColor" id="746924007"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">textColor</string> + <reference key="NSColor" ref="1014173410"/> + </object> + </object> + </object> + <object class="NSTextField" id="793878303"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">292</int> + <string key="NSFrame">{{548, 40}, {149, 22}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="771351714"> + <int key="NSCellFlags">-1804468671</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents"/> + <reference key="NSSupport" ref="839892825"/> + <reference key="NSControlView" ref="793878303"/> + <bool key="NSDrawsBackground">YES</bool> + <reference key="NSBackgroundColor" ref="551482984"/> + <reference key="NSTextColor" ref="746924007"/> + </object> + </object> + <object class="NSButton" id="73192648"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">292</int> + <string key="NSFrame">{{525, 22}, {63, 18}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="132250294"> + <int key="NSCellFlags">-2080244224</int> + <int key="NSCellFlags2">0</int> + <string key="NSContents"/> + <reference key="NSSupport" ref="839892825"/> + <reference key="NSControlView" ref="73192648"/> + <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags2">2</int> + <reference key="NSNormalImage" ref="430860861"/> + <reference key="NSAlternateImage" ref="990511366"/> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + <object class="NSTextField" id="744538319"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">292</int> + <string key="NSFrame">{{548, 20}, {149, 22}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="1042618748"> + <int key="NSCellFlags">-1804468671</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents"/> + <reference key="NSSupport" ref="839892825"/> + <reference key="NSControlView" ref="744538319"/> + <bool key="NSDrawsBackground">YES</bool> + <reference key="NSBackgroundColor" ref="551482984"/> + <reference key="NSTextColor" ref="746924007"/> + </object> + </object> + <object class="NSTextField" id="457788095"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">292</int> + <string key="NSFrame">{{524, 86}, {176, 17}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="161351151"> + <int key="NSCellFlags">68288064</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">And these prefixes:</string> + <reference key="NSSupport" ref="839892825"/> + <reference key="NSControlView" ref="457788095"/> + <reference key="NSBackgroundColor" ref="374235803"/> + <reference key="NSTextColor" ref="212665692"/> + </object> + </object> + </object> + <string key="NSFrameSize">{946, 321}</string> + <reference key="NSSuperview"/> + </object> + <string key="NSScreenRect">{{0, 0}, {2560, 1578}}</string> + <string key="NSMinSize">{946, 343}</string> + <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string> + </object> + <object class="NSArrayController" id="553651912"> + <object class="NSMutableArray" key="NSDeclaredKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>time</string> + <string>channel</string> + <string>message</string> + <string>flags</string> + <string>dispatch</string> + <string>process</string> + <string>parameters</string> + </object> + <string key="NSObjectClassName">CocoaLogData</string> + <bool key="NSEditable">YES</bool> + <object class="_NSManagedProxy" key="_NSManagedProxy"/> + <bool key="NSAvoidsEmptySelection">YES</bool> + <bool key="NSPreservesSelection">YES</bool> + <bool key="NSSelectsInsertedObjects">YES</bool> + <bool key="NSFilterRestrictsInsertion">YES</bool> + <bool key="NSClearsFilterPredicateOnInsertion">YES</bool> + </object> + </object> + <object class="IBObjectContainer" key="IBDocument.Objects"> + <object class="NSMutableArray" key="connectionRecords"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">tableView_</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="493623503"/> + </object> + <int key="connectionID">29</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">startStop:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="1024951726"/> + </object> + <int key="connectionID">30</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">clear:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="270096373"/> + </object> + <int key="connectionID">31</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">startStopButton_</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="1024951726"/> + </object> + <int key="connectionID">34</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: arrangedObjects.time</string> + <reference key="source" ref="238645834"/> + <reference key="destination" ref="553651912"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="238645834"/> + <reference key="NSDestination" ref="553651912"/> + <string key="NSLabel">value: arrangedObjects.time</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">arrangedObjects.time</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">40</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: arrangedObjects.channel</string> + <reference key="source" ref="277179295"/> + <reference key="destination" ref="553651912"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="277179295"/> + <reference key="NSDestination" ref="553651912"/> + <string key="NSLabel">value: arrangedObjects.channel</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">arrangedObjects.channel</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">42</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: arrangedObjects.message</string> + <reference key="source" ref="1025181063"/> + <reference key="destination" ref="553651912"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="1025181063"/> + <reference key="NSDestination" ref="553651912"/> + <string key="NSLabel">value: arrangedObjects.message</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">arrangedObjects.message</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">44</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: arrangedObjects.flags</string> + <reference key="source" ref="983835171"/> + <reference key="destination" ref="553651912"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="983835171"/> + <reference key="NSDestination" ref="553651912"/> + <string key="NSLabel">value: arrangedObjects.flags</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">arrangedObjects.flags</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">46</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: arrangedObjects.dispatch</string> + <reference key="source" ref="756023669"/> + <reference key="destination" ref="553651912"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="756023669"/> + <reference key="NSDestination" ref="553651912"/> + <string key="NSLabel">value: arrangedObjects.dispatch</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">arrangedObjects.dispatch</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">48</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: arrangedObjects.process</string> + <reference key="source" ref="325673043"/> + <reference key="destination" ref="553651912"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="325673043"/> + <reference key="NSDestination" ref="553651912"/> + <string key="NSLabel">value: arrangedObjects.process</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">arrangedObjects.process</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">50</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: arrangedObjects.parameters</string> + <reference key="source" ref="933394012"/> + <reference key="destination" ref="553651912"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="933394012"/> + <reference key="NSDestination" ref="553651912"/> + <string key="NSLabel">value: arrangedObjects.parameters</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">arrangedObjects.parameters</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">52</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">dataController_</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="553651912"/> + </object> + <int key="connectionID">53</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">userStringTextField2_</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="793878303"/> + </object> + <int key="connectionID">155</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">userStringTextField3_</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="744538319"/> + </object> + <int key="connectionID">156</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: appCache_</string> + <reference key="source" ref="5901761"/> + <reference key="destination" ref="1001"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="5901761"/> + <reference key="NSDestination" ref="1001"/> + <string key="NSLabel">value: appCache_</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">appCache_</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">160</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: view_</string> + <reference key="source" ref="810569676"/> + <reference key="destination" ref="1001"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="810569676"/> + <reference key="NSDestination" ref="1001"/> + <string key="NSLabel">value: view_</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">view_</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">163</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: utilityHost_</string> + <reference key="source" ref="1002988259"/> + <reference key="destination" ref="1001"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="1002988259"/> + <reference key="NSDestination" ref="1001"/> + <string key="NSLabel">value: utilityHost_</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">utilityHost_</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">166</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: viewHost_</string> + <reference key="source" ref="1012814957"/> + <reference key="destination" ref="1001"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="1012814957"/> + <reference key="NSDestination" ref="1001"/> + <string key="NSLabel">value: viewHost_</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">viewHost_</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">169</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: plugin_</string> + <reference key="source" ref="304633318"/> + <reference key="destination" ref="1001"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="304633318"/> + <reference key="NSDestination" ref="1001"/> + <string key="NSLabel">value: plugin_</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">plugin_</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">172</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: npObject_</string> + <reference key="source" ref="28169093"/> + <reference key="destination" ref="1001"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="28169093"/> + <reference key="NSDestination" ref="1001"/> + <string key="NSLabel">value: npObject_</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">npObject_</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">175</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: devTools_</string> + <reference key="source" ref="460878671"/> + <reference key="destination" ref="1001"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="460878671"/> + <reference key="NSDestination" ref="1001"/> + <string key="NSLabel">value: devTools_</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">devTools_</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">178</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: pluginProcessing_</string> + <reference key="source" ref="118154437"/> + <reference key="destination" ref="1001"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="118154437"/> + <reference key="NSDestination" ref="1001"/> + <string key="NSLabel">value: pluginProcessing_</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">pluginProcessing_</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">181</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: userString1_</string> + <reference key="source" ref="521791597"/> + <reference key="destination" ref="1001"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="521791597"/> + <reference key="NSDestination" ref="1001"/> + <string key="NSLabel">value: userString1_</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">userString1_</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">184</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: userString2_</string> + <reference key="source" ref="401310256"/> + <reference key="destination" ref="1001"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="401310256"/> + <reference key="NSDestination" ref="1001"/> + <string key="NSLabel">value: userString2_</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">userString2_</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">187</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: userString3_</string> + <reference key="source" ref="73192648"/> + <reference key="destination" ref="1001"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="73192648"/> + <reference key="NSDestination" ref="1001"/> + <string key="NSLabel">value: userString3_</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">userString3_</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">190</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">userStringTextField1_</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="534259314"/> + </object> + <int key="connectionID">191</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">eventCount_</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="866225217"/> + </object> + <int key="connectionID">202</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">filteredEventCount_</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="1023302664"/> + </object> + <int key="connectionID">203</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">delegate</string> + <reference key="source" ref="1005"/> + <reference key="destination" ref="1001"/> + </object> + <int key="connectionID">208</int> + </object> + </object> + <object class="IBMutableOrderedSet" key="objectRecords"> + <object class="NSArray" key="orderedObjects"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBObjectRecord"> + <int key="objectID">0</int> + <reference key="object" ref="0"/> + <reference key="children" ref="1000"/> + <nil key="parent"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-2</int> + <reference key="object" ref="1001"/> + <reference key="parent" ref="0"/> + <string key="objectName">File's Owner</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-1</int> + <reference key="object" ref="1003"/> + <reference key="parent" ref="0"/> + <string key="objectName">First Responder</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-3</int> + <reference key="object" ref="1004"/> + <reference key="parent" ref="0"/> + <string key="objectName">Application</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">1</int> + <reference key="object" ref="1005"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="1006"/> + </object> + <reference key="parent" ref="0"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">2</int> + <reference key="object" ref="1006"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="786536229"/> + <reference ref="478845374"/> + <reference ref="1023302664"/> + <reference ref="622353472"/> + <reference ref="866225217"/> + <reference ref="563670146"/> + <reference ref="521791597"/> + <reference ref="401310256"/> + <reference ref="534259314"/> + <reference ref="793878303"/> + <reference ref="73192648"/> + <reference ref="744538319"/> + <reference ref="457788095"/> + <reference ref="1024951726"/> + <reference ref="270096373"/> + <reference ref="5901761"/> + <reference ref="810569676"/> + <reference ref="1002988259"/> + <reference ref="1012814957"/> + <reference ref="48513448"/> + <reference ref="28169093"/> + <reference ref="460878671"/> + <reference ref="904057869"/> + <reference ref="98924657"/> + </object> + <reference key="parent" ref="1005"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">3</int> + <reference key="object" ref="1024951726"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="939136037"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">4</int> + <reference key="object" ref="939136037"/> + <reference key="parent" ref="1024951726"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5</int> + <reference key="object" ref="270096373"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="829055934"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">6</int> + <reference key="object" ref="829055934"/> + <reference key="parent" ref="270096373"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">9</int> + <reference key="object" ref="98924657"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="95866814"/> + <reference ref="272438547"/> + <reference ref="493623503"/> + <reference ref="1005294920"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">10</int> + <reference key="object" ref="95866814"/> + <reference key="parent" ref="98924657"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">11</int> + <reference key="object" ref="272438547"/> + <reference key="parent" ref="98924657"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">12</int> + <reference key="object" ref="493623503"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="238645834"/> + <reference ref="277179295"/> + <reference ref="1025181063"/> + <reference ref="983835171"/> + <reference ref="756023669"/> + <reference ref="325673043"/> + <reference ref="933394012"/> + </object> + <reference key="parent" ref="98924657"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">13</int> + <reference key="object" ref="1005294920"/> + <reference key="parent" ref="98924657"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">14</int> + <reference key="object" ref="238645834"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="423320335"/> + </object> + <reference key="parent" ref="493623503"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">15</int> + <reference key="object" ref="277179295"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="310532082"/> + </object> + <reference key="parent" ref="493623503"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">16</int> + <reference key="object" ref="310532082"/> + <reference key="parent" ref="277179295"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">17</int> + <reference key="object" ref="423320335"/> + <reference key="parent" ref="238645834"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">18</int> + <reference key="object" ref="1025181063"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="928723114"/> + </object> + <reference key="parent" ref="493623503"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">19</int> + <reference key="object" ref="928723114"/> + <reference key="parent" ref="1025181063"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">20</int> + <reference key="object" ref="983835171"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="854180196"/> + </object> + <reference key="parent" ref="493623503"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">21</int> + <reference key="object" ref="854180196"/> + <reference key="parent" ref="983835171"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">22</int> + <reference key="object" ref="756023669"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="227299625"/> + </object> + <reference key="parent" ref="493623503"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">23</int> + <reference key="object" ref="227299625"/> + <reference key="parent" ref="756023669"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">24</int> + <reference key="object" ref="325673043"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="857967550"/> + </object> + <reference key="parent" ref="493623503"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">25</int> + <reference key="object" ref="857967550"/> + <reference key="parent" ref="325673043"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">26</int> + <reference key="object" ref="933394012"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="793253328"/> + </object> + <reference key="parent" ref="493623503"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">27</int> + <reference key="object" ref="793253328"/> + <reference key="parent" ref="933394012"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">37</int> + <reference key="object" ref="553651912"/> + <reference key="parent" ref="0"/> + <string key="objectName">Log Array Controller</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">56</int> + <reference key="object" ref="786536229"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="275812073"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">57</int> + <reference key="object" ref="275812073"/> + <reference key="parent" ref="786536229"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">58</int> + <reference key="object" ref="1023302664"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="886135644"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">59</int> + <reference key="object" ref="886135644"/> + <reference key="parent" ref="1023302664"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">100</int> + <reference key="object" ref="563670146"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="180388177"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">101</int> + <reference key="object" ref="180388177"/> + <reference key="parent" ref="563670146"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">102</int> + <reference key="object" ref="5901761"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="106126120"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">103</int> + <reference key="object" ref="106126120"/> + <reference key="parent" ref="5901761"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">104</int> + <reference key="object" ref="810569676"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="334183418"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">105</int> + <reference key="object" ref="334183418"/> + <reference key="parent" ref="810569676"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">106</int> + <reference key="object" ref="1002988259"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="581697433"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">107</int> + <reference key="object" ref="581697433"/> + <reference key="parent" ref="1002988259"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">108</int> + <reference key="object" ref="1012814957"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="640384434"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">109</int> + <reference key="object" ref="48513448"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="304633318"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">110</int> + <reference key="object" ref="28169093"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="54317898"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">111</int> + <reference key="object" ref="54317898"/> + <reference key="parent" ref="28169093"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">112</int> + <reference key="object" ref="304633318"/> + <reference key="parent" ref="48513448"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">113</int> + <reference key="object" ref="640384434"/> + <reference key="parent" ref="1012814957"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">114</int> + <reference key="object" ref="460878671"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="59436594"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">115</int> + <reference key="object" ref="904057869"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="118154437"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">118</int> + <reference key="object" ref="118154437"/> + <reference key="parent" ref="904057869"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">119</int> + <reference key="object" ref="59436594"/> + <reference key="parent" ref="460878671"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">142</int> + <reference key="object" ref="521791597"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="313564618"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">143</int> + <reference key="object" ref="313564618"/> + <reference key="parent" ref="521791597"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">144</int> + <reference key="object" ref="401310256"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="127509546"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">145</int> + <reference key="object" ref="127509546"/> + <reference key="parent" ref="401310256"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">146</int> + <reference key="object" ref="534259314"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="803973914"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">147</int> + <reference key="object" ref="803973914"/> + <reference key="parent" ref="534259314"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">148</int> + <reference key="object" ref="793878303"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="771351714"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">149</int> + <reference key="object" ref="771351714"/> + <reference key="parent" ref="793878303"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">150</int> + <reference key="object" ref="73192648"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="132250294"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">151</int> + <reference key="object" ref="744538319"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="1042618748"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">152</int> + <reference key="object" ref="1042618748"/> + <reference key="parent" ref="744538319"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">153</int> + <reference key="object" ref="132250294"/> + <reference key="parent" ref="73192648"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">196</int> + <reference key="object" ref="622353472"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="251259803"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">197</int> + <reference key="object" ref="866225217"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="409428589"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">198</int> + <reference key="object" ref="409428589"/> + <reference key="parent" ref="866225217"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">199</int> + <reference key="object" ref="251259803"/> + <reference key="parent" ref="622353472"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">200</int> + <reference key="object" ref="478845374"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="994055988"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">201</int> + <reference key="object" ref="994055988"/> + <reference key="parent" ref="478845374"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">206</int> + <reference key="object" ref="457788095"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="161351151"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">207</int> + <reference key="object" ref="161351151"/> + <reference key="parent" ref="457788095"/> + </object> + </object> + </object> + <object class="NSMutableDictionary" key="flattenedProperties"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>-1.IBPluginDependency</string> + <string>-2.IBPluginDependency</string> + <string>-3.IBPluginDependency</string> + <string>1.IBEditorWindowLastContentRect</string> + <string>1.IBPluginDependency</string> + <string>1.IBWindowTemplateEditedContentRect</string> + <string>1.NSWindowTemplate.visibleAtLaunch</string> + <string>1.WindowOrigin</string> + <string>1.editorWindowContentRectSynchronizationRect</string> + <string>1.windowTemplate.hasMinSize</string> + <string>1.windowTemplate.minSize</string> + <string>10.IBPluginDependency</string> + <string>100.IBPluginDependency</string> + <string>101.IBPluginDependency</string> + <string>102.IBPluginDependency</string> + <string>103.IBPluginDependency</string> + <string>104.IBPluginDependency</string> + <string>105.IBPluginDependency</string> + <string>106.IBPluginDependency</string> + <string>107.IBPluginDependency</string> + <string>108.IBPluginDependency</string> + <string>109.IBPluginDependency</string> + <string>11.IBPluginDependency</string> + <string>110.IBPluginDependency</string> + <string>111.IBPluginDependency</string> + <string>112.IBPluginDependency</string> + <string>113.IBPluginDependency</string> + <string>114.IBPluginDependency</string> + <string>115.IBPluginDependency</string> + <string>118.IBPluginDependency</string> + <string>119.IBPluginDependency</string> + <string>12.IBPluginDependency</string> + <string>13.IBPluginDependency</string> + <string>14.IBPluginDependency</string> + <string>142.IBPluginDependency</string> + <string>143.IBPluginDependency</string> + <string>144.IBPluginDependency</string> + <string>145.IBPluginDependency</string> + <string>146.IBPluginDependency</string> + <string>147.IBPluginDependency</string> + <string>148.IBPluginDependency</string> + <string>149.IBPluginDependency</string> + <string>15.IBPluginDependency</string> + <string>150.IBPluginDependency</string> + <string>151.IBPluginDependency</string> + <string>152.IBPluginDependency</string> + <string>153.IBPluginDependency</string> + <string>16.IBPluginDependency</string> + <string>17.IBPluginDependency</string> + <string>196.IBPluginDependency</string> + <string>197.IBPluginDependency</string> + <string>198.IBPluginDependency</string> + <string>199.IBPluginDependency</string> + <string>2.IBPluginDependency</string> + <string>200.IBPluginDependency</string> + <string>201.IBPluginDependency</string> + <string>206.IBPluginDependency</string> + <string>207.IBPluginDependency</string> + <string>3.IBPluginDependency</string> + <string>37.IBPluginDependency</string> + <string>4.IBPluginDependency</string> + <string>5.IBPluginDependency</string> + <string>56.IBPluginDependency</string> + <string>57.IBPluginDependency</string> + <string>58.IBPluginDependency</string> + <string>59.IBPluginDependency</string> + <string>6.IBPluginDependency</string> + <string>9.IBPluginDependency</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{42, 1144}, {946, 321}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{42, 1144}, {946, 321}}</string> + <integer value="1"/> + <string>{196, 240}</string> + <string>{{357, 418}, {480, 270}}</string> + <boolean value="YES"/> + <string>{946, 321}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + </object> + </object> + <object class="NSMutableDictionary" key="unlocalizedProperties"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference key="dict.sortedKeys" ref="0"/> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <nil key="activeLocalization"/> + <object class="NSMutableDictionary" key="localizations"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference key="dict.sortedKeys" ref="0"/> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <nil key="sourceID"/> + <int key="maxID">208</int> + </object> + <object class="IBClassDescriber" key="IBDocument.Classes"> + <object class="NSMutableArray" key="referencedPartialClassDescriptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBPartialClassDescription"> + <string key="className">AboutIPCController</string> + <string key="superclassName">NSWindowController</string> + <object class="NSMutableDictionary" key="actions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>clear:</string> + <string>startStop:</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>id</string> + <string>id</string> + </object> + </object> + <object class="NSMutableDictionary" key="outlets"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>dataController_</string> + <string>eventCount_</string> + <string>filteredEventCount_</string> + <string>startStopButton_</string> + <string>tableView_</string> + <string>userStringTextField1_</string> + <string>userStringTextField2_</string> + <string>userStringTextField3_</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSArrayController</string> + <string>NSTextField</string> + <string>NSTextField</string> + <string>NSButton</string> + <string>NSTableView</string> + <string>NSTextField</string> + <string>NSTextField</string> + <string>NSTextField</string> + </object> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/cocoa/about_ipc_controller.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/cocoa/status_bubble_mac.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/cocoa/tab_strip_model_observer_bridge.h</string> + </object> + </object> + </object> + <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBPartialClassDescription"> + <string key="className">NSActionCell</string> + <string key="superclassName">NSCell</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSActionCell.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSApplication</string> + <string key="superclassName">NSResponder</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="91708435"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSApplication.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSApplication</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="245985208"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSApplicationScripting.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSApplication</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="21001340"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSColorPanel.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSApplication</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSHelpManager.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSApplication</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSPageLayout.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSApplication</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSUserInterfaceItemSearching.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSArrayController</string> + <string key="superclassName">NSObjectController</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSArrayController.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSButton</string> + <string key="superclassName">NSControl</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSButton.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSButtonCell</string> + <string key="superclassName">NSActionCell</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSButtonCell.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSCell</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSCell.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSControl</string> + <string key="superclassName">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="396340753"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSControl.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSController</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSController.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSFormatter</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSMenu</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="364138646"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSMenu.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSAccessibility.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <reference key="sourceIdentifier" ref="91708435"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <reference key="sourceIdentifier" ref="245985208"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <reference key="sourceIdentifier" ref="21001340"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <reference key="sourceIdentifier" ref="396340753"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSDictionaryController.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSDragging.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSFontManager.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSFontPanel.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSKeyValueBinding.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <reference key="sourceIdentifier" ref="364138646"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSNibLoading.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSOutlineView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSPasteboard.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSSavePanel.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="444320675"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSTableView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSToolbarItem.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="706871835"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSArchiver.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSClassDescription.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSError.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSObject.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSObjectScripting.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSPortCoder.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSScriptClassDescription.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSScriptKeyValueCoding.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSScriptObjectSpecifiers.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSScriptWhoseTests.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSThread.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSURL.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSURLDownload.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">QuartzCore.framework/Headers/CAAnimation.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">QuartzCore.framework/Headers/CALayer.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">QuartzCore.framework/Headers/CIImageProvider.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">SecurityInterface.framework/Headers/SFAuthorizationView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">SecurityInterface.framework/Headers/SFCertificatePanel.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">SecurityInterface.framework/Headers/SFChooseIdentityPanel.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObjectController</string> + <string key="superclassName">NSController</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSObjectController.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSResponder</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSInterfaceStyle.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSResponder</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSResponder.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSScrollView</string> + <string key="superclassName">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSScrollView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSScroller</string> + <string key="superclassName">NSControl</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSScroller.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSTableColumn</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSTableColumn.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSTableHeaderView</string> + <string key="superclassName">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSTableHeaderView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSTableView</string> + <string key="superclassName">NSControl</string> + <reference key="sourceIdentifier" ref="444320675"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSTextField</string> + <string key="superclassName">NSControl</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSTextField.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSTextFieldCell</string> + <string key="superclassName">NSActionCell</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSTextFieldCell.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSClipView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSRulerView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSView</string> + <string key="superclassName">NSResponder</string> + <reference key="sourceIdentifier" ref="706871835"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSWindow</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSDrawer.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSWindow</string> + <string key="superclassName">NSResponder</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSWindow.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSWindow</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSWindowScripting.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSWindowController</string> + <string key="superclassName">NSResponder</string> + <object class="NSMutableDictionary" key="actions"> + <string key="NS.key.0">showWindow:</string> + <string key="NS.object.0">id</string> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSWindowController.h</string> + </object> + </object> + </object> + </object> + <int key="IBDocument.localizationMode">0</int> + <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string> + <integer value="1050" key="NS.object.0"/> + </object> + <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string> + <integer value="3000" key="NS.object.0"/> + </object> + <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool> + <string key="IBDocument.LastKnownRelativeProjectPath">../../chrome.xcodeproj</string> + <int key="IBDocument.defaultPropertyAccessControl">3</int> + </data> +</archive> diff --git a/chrome/browser/browser_about_handler.cc b/chrome/browser/browser_about_handler.cc index 9f17f77..372b7ff 100644 --- a/chrome/browser/browser_about_handler.cc +++ b/chrome/browser/browser_about_handler.cc @@ -50,6 +50,8 @@ #include "chrome/browser/views/about_network_dialog.h" #elif defined(OS_CHROMEOS) #include "chrome/browser/chromeos/chromeos_version_loader.h" +#elif defined(OS_MACOSX) +#include "chrome/browser/cocoa/about_ipc_dialog.h" #endif #if defined(USE_TCMALLOC) @@ -845,14 +847,17 @@ bool WillHandleBrowserAboutURL(GURL* url, Profile* profile) { bool HandleNonNavigationAboutURL(const GURL& url) { // About:network and IPC and currently buggy, so we disable it for official // builds. -#if defined(OS_WIN) && !defined(OFFICIAL_BUILD) +#if !defined(OFFICIAL_BUILD) + +#if defined(OS_WIN) if (LowerCaseEqualsASCII(url.spec(), chrome::kChromeUINetworkURL)) { // Run the dialog. This will re-use the existing one if it's already up. AboutNetworkDialog::RunDialog(); return true; } +#endif -#ifdef IPC_MESSAGE_LOG_ENABLED +#if !defined(OS_LINUX) && defined(IPC_MESSAGE_LOG_ENABLED) if (LowerCaseEqualsASCII(url.spec(), chrome::kChromeUIIPCURL)) { // Run the dialog. This will re-use the existing one if it's already up. AboutIPCDialog::RunDialog(); @@ -860,8 +865,7 @@ bool HandleNonNavigationAboutURL(const GURL& url) { } #endif -#else - // TODO(port) Implement this. -#endif +#endif // OFFICIAL_BUILD + return false; } diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h index ef3b6d7..ff41250 100644 --- a/chrome/browser/browser_process.h +++ b/chrome/browser/browser_process.h @@ -14,6 +14,7 @@ #include <vector> #include "base/basictypes.h" +#include "ipc/ipc_message.h" class AutomationProviderList; class Clipboard; @@ -153,6 +154,13 @@ class BrowserProcess { // case, we default to returning true. virtual bool have_inspector_files() const = 0; +#if defined(IPC_MESSAGE_LOG_ENABLED) + // Enable or disable IPC logging for the browser, all processes + // derived from ChildProcess (plugin etc), and all + // renderers. + virtual void SetIPCLoggingEnabled(bool enable) = 0; +#endif + private: // User-data-dir based profiles. std::vector<std::wstring> user_data_dir_profiles_; diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc index f971e80..d842ede 100644 --- a/chrome/browser/browser_process_impl.cc +++ b/chrome/browser/browser_process_impl.cc @@ -32,6 +32,7 @@ #include "chrome/common/notification_service.h" #include "chrome/common/pref_names.h" #include "chrome/common/pref_service.h" +#include "ipc/ipc_logging.h" #if defined(OS_WIN) #include "chrome/browser/automation/automation_provider_list.h" @@ -42,6 +43,11 @@ #include "chrome/common/temp_scaffolding_stubs.h" #endif +#if defined(IPC_MESSAGE_LOG_ENABLED) +#include "chrome/common/plugin_messages.h" +#include "chrome/common/render_messages.h" +#endif + namespace { // ---------------------------------------------------------------------------- @@ -452,6 +458,47 @@ void BrowserProcessImpl::CheckForInspectorFiles() { NewRunnableMethod(this, &BrowserProcessImpl::DoInspectorFilesCheck)); } +#if defined(IPC_MESSAGE_LOG_ENABLED) + +void BrowserProcessImpl::SetIPCLoggingEnabled(bool enable) { + // First enable myself. + if (enable) + IPC::Logging::current()->Enable(); + else + IPC::Logging::current()->Disable(); + + // Now tell subprocesses. Messages to ChildProcess-derived + // processes must be done on the IO thread. + io_thread()->message_loop()->PostTask + (FROM_HERE, + NewRunnableMethod( + this, + &BrowserProcessImpl::SetIPCLoggingEnabledForChildProcesses, + enable)); + + // Finally, tell the renderers which don't derive from ChildProcess. + // Messages to the renderers must be done on the UI (main) thread. + RenderProcessHost::iterator i(RenderProcessHost::AllHostsIterator()); + for (RenderProcessHost* host = i.GetCurrentValue(); + !i.IsAtEnd(); + i.Advance()) { + host->Send(new ViewMsg_SetIPCLoggingEnabled(enable)); + } +} + +// Helper for SetIPCLoggingEnabled. +void BrowserProcessImpl::SetIPCLoggingEnabledForChildProcesses(bool enabled) { + DCHECK(MessageLoop::current() == + ChromeThread::GetMessageLoop(ChromeThread::IO)); + + ChildProcessHost::Iterator i; // default constr references a singleton + for (ChildProcessHost* host = *i; !i.Done(); ++i) { + host->Send(new PluginProcessMsg_SetIPCLoggingEnabled(enabled)); + } +} + +#endif // IPC_MESSAGE_LOG_ENABLED + void BrowserProcessImpl::DoInspectorFilesCheck() { // Runs on FILE thread. DCHECK(file_thread_->message_loop() == MessageLoop::current()); diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_process_impl.h index 5bf3509..4f094dd 100644 --- a/chrome/browser/browser_process_impl.h +++ b/chrome/browser/browser_process_impl.h @@ -19,6 +19,7 @@ #include "chrome/browser/automation/automation_provider_list.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/tab_contents/thumbnail_generator.h" +#include "ipc/ipc_message.h" #if defined(OS_WIN) #include "sandbox/src/sandbox.h" @@ -197,6 +198,10 @@ class BrowserProcessImpl : public BrowserProcess, public NonThreadSafe { return have_inspector_files_; } +#if defined(IPC_MESSAGE_LOG_ENABLED) + virtual void SetIPCLoggingEnabled(bool enable); +#endif + private: void CreateResourceDispatcherHost(); void CreatePrefService(); @@ -222,6 +227,10 @@ class BrowserProcessImpl : public BrowserProcess, public NonThreadSafe { void InitBrokerServices(sandbox::BrokerServices* broker_services); #endif // defined(OS_WIN) +#if defined(IPC_MESSAGE_LOG_ENABLED) + void SetIPCLoggingEnabledForChildProcesses(bool enabled); +#endif + bool created_resource_dispatcher_host_; scoped_ptr<ResourceDispatcherHost> resource_dispatcher_host_; diff --git a/chrome/browser/cocoa/about_ipc_bridge.h b/chrome/browser/cocoa/about_ipc_bridge.h new file mode 100644 index 0000000..6ac1ec0 --- /dev/null +++ b/chrome/browser/cocoa/about_ipc_bridge.h @@ -0,0 +1,32 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_COCOA_ABOUT_IPC_BRIDGE_H_ +#define CHROME_BROWSER_COCOA_ABOUT_IPC_BRIDGE_H_ + +#include "ipc/ipc_logging.h" +#include "ipc/ipc_message_utils.h" + +#if defined(IPC_MESSAGE_LOG_ENABLED) + +@class AboutIPCController; + +// On Windows, the AboutIPCDialog is a views::View. On Mac we have a +// Cocoa dialog. This class bridges from C++ to ObjC. +class AboutIPCBridge : public IPC::Logging::Consumer { + public: + AboutIPCBridge(AboutIPCController* controller) : controller_(controller) { } + virtual ~AboutIPCBridge() { } + + // IPC::Logging::Consumer implementation. + virtual void Log(const IPC::LogData& data); + + private: + AboutIPCController* controller_; // weak; owns me + DISALLOW_COPY_AND_ASSIGN(AboutIPCBridge); +}; + +#endif // IPC_MESSAGE_LOG_ENABLED + +#endif // CHROME_BROWSER_COCOA_ABOUT_IPC_BRIDGE_H_ diff --git a/chrome/browser/cocoa/about_ipc_bridge.mm b/chrome/browser/cocoa/about_ipc_bridge.mm new file mode 100644 index 0000000..ee02e94 --- /dev/null +++ b/chrome/browser/cocoa/about_ipc_bridge.mm @@ -0,0 +1,21 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/cocoa/about_ipc_bridge.h" +#include "chrome/browser/cocoa/about_ipc_controller.h" + +#if defined(IPC_MESSAGE_LOG_ENABLED) + +void AboutIPCBridge::Log(const IPC::LogData& data) { + CocoaLogData* cocoa_data = [[CocoaLogData alloc] initWithLogData:data]; + if ([NSThread isMainThread]) { + [controller_ log:cocoa_data]; + } else { + [controller_ performSelectorOnMainThread:@selector(log:) + withObject:cocoa_data + waitUntilDone:NO]; + } +} + +#endif diff --git a/chrome/browser/cocoa/about_ipc_controller.h b/chrome/browser/cocoa/about_ipc_controller.h new file mode 100644 index 0000000..e907af7 --- /dev/null +++ b/chrome/browser/cocoa/about_ipc_controller.h @@ -0,0 +1,83 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_COCOA_ABOUT_IPC_CONTROLLER_H_ +#define CHROME_BROWSER_COCOA_ABOUT_IPC_CONTROLLER_H_ + +#import <Cocoa/Cocoa.h> + +#include "base/scoped_ptr.h" +#include "ipc/ipc_logging.h" +#include "ipc/ipc_message_utils.h" +#include "third_party/GTM/Foundation/GTMRegex.h" + +// Must be included after IPC_MESSAGE_LOG_ENABLED gets defined +#import "chrome/browser/cocoa/about_ipc_bridge.h" + +#if defined(IPC_MESSAGE_LOG_ENABLED) + +// An objc wrapper for IPC::LogData to allow use of Cocoa bindings. +@interface CocoaLogData : NSObject { + @private + IPC::LogData data_; +} +- (id)initWithLogData:(const IPC::LogData&)data; +@end + + +// A window controller that handles the about:ipc non-modal dialog. +@interface AboutIPCController : NSWindowController { + @private + scoped_ptr<AboutIPCBridge> bridge_; + IBOutlet NSButton* startStopButton_; + IBOutlet NSTableView* tableView_; + IBOutlet NSArrayController* dataController_; + IBOutlet NSTextField* eventCount_; + IBOutlet NSTextField* filteredEventCount_; + IBOutlet NSTextField* userStringTextField1_; + IBOutlet NSTextField* userStringTextField2_; + IBOutlet NSTextField* userStringTextField3_; + // Count of filtered events. + int filteredEventCounter_; + // Cocoa-bound to check boxes for filtering messages. + // Each BOOL allows events that have that name prefix. + // E.g. if set, appCache_ allows events named AppCache*. + // The actual string to match is defined in the xib. + // The userStrings allow a user-specified prefix. + BOOL appCache_; + BOOL view_; + BOOL utilityHost_; + BOOL viewHost_; + BOOL plugin_; + BOOL npObject_; + BOOL devTools_; + BOOL pluginProcessing_; + BOOL userString1_; + BOOL userString2_; + BOOL userString3_; +} + ++ (AboutIPCController*)sharedController; + +- (IBAction)startStop:(id)sender; +- (IBAction)clear:(id)sender; + +// Called from our C++ bridge class. To accomodate multithreaded +// ownership issues, this method ACCEPTS OWNERSHIP of the arg passed +// in. +- (void)log:(CocoaLogData*)data; + +// Update visible state (e.g. Start/Stop button) based on logging run +// state. Does not change state. +- (void)updateVisibleRunState; + +@end + +@interface AboutIPCController(TestingAPI) +- (BOOL)filterOut:(CocoaLogData*)data; +- (void)setDisplayViewMessages:(BOOL)display; +@end + +#endif // IPC_MESSAGE_LOG_ENABLED +#endif // CHROME_BROWSER_COCOA_ABOUT_IPC_CONTROLLER_H_ diff --git a/chrome/browser/cocoa/about_ipc_controller.mm b/chrome/browser/cocoa/about_ipc_controller.mm new file mode 100644 index 0000000..32a9933 --- /dev/null +++ b/chrome/browser/cocoa/about_ipc_controller.mm @@ -0,0 +1,198 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/logging.h" +#include "base/mac_util.h" +#include "base/string_util.h" +#include "base/sys_string_conversions.h" +#include "base/time.h" +#include "chrome/browser/browser_process.h" +#import "chrome/browser/cocoa/about_ipc_controller.h" + +#if defined(IPC_MESSAGE_LOG_ENABLED) + +@implementation CocoaLogData + +- (id)initWithLogData:(const IPC::LogData&)data { + if ((self = [super init])) { + data_ = data; + // data_.message_name may not have been filled in if it originated + // somewhere other than the browser process. + IPC::Logging::GetMessageText(data_.type, &data_.message_name, NULL, NULL); + } + return self; +} + +- (NSString*)time { + base::Time t = base::Time::FromInternalValue(data_.sent); + base::Time::Exploded exploded; + t.LocalExplode(&exploded); + return [NSString stringWithFormat:@"%02d:%02d:%02d.%03d", + exploded.hour, exploded.minute, + exploded.second, exploded.millisecond]; +} + +- (NSString*)channel { + return base::SysUTF8ToNSString(data_.channel); +} + +- (NSString*)message { + if (data_.message_name == L"") { + int high = data_.type >> 12; + int low = data_.type - (high<<12); + return [NSString stringWithFormat:@"type=(%d,%d) 0x%x,0x%x", + high, low, high, low]; + } + else { + return base::SysWideToNSString(data_.message_name); + } +} + +- (NSString*)flags { + return base::SysWideToNSString(data_.flags); +} + +- (NSString*)dispatch { + base::Time sent = base::Time::FromInternalValue(data_.sent); + int64 delta = (base::Time::FromInternalValue(data_.receive) - + sent).InMilliseconds(); + return [NSString stringWithFormat:@"%d", delta ? (int)delta : 0]; +} + +- (NSString*)process { + base::TimeDelta delta = (base::Time::FromInternalValue(data_.dispatch) - + base::Time::FromInternalValue(data_.receive)); + int64 t = delta.InMilliseconds(); + return [NSString stringWithFormat:@"%d", t ? (int)t : 0]; +} + +- (NSString*)parameters { + return base::SysWideToNSString(data_.params); +} + +@end + +namespace { +AboutIPCController* gSharedController = nil; +} + +@implementation AboutIPCController + ++ (AboutIPCController*)sharedController { + if (gSharedController == nil) + gSharedController = [[AboutIPCController alloc] init]; + return gSharedController; +} + +- (id)init { + NSString* nibpath = [mac_util::MainAppBundle() pathForResource:@"AboutIPC" + ofType:@"nib"]; + if ((self = [super initWithWindowNibPath:nibpath owner:self])) { + // Default to all on + appCache_ = view_ = utilityHost_ = viewHost_ = plugin_ = + npObject_ = devTools_ = pluginProcessing_ = userString1_ = + userString2_ = userString3_ = YES; + } + return self; +} + +- (void)dealloc { + if (gSharedController == self) + gSharedController = nil; + if (g_browser_process) + g_browser_process->SetIPCLoggingEnabled(false); // just in case... + IPC::Logging::current()->SetConsumer(NULL); + [super dealloc]; +} + +- (void)awakeFromNib { + // Running Chrome with the --ipc-logging switch might cause it to + // be enabled before the about:ipc window comes up; accomodate. + [self updateVisibleRunState]; + + // We are now able to display information, so let'er rip. + bridge_.reset(new AboutIPCBridge(self)); + IPC::Logging::current()->SetConsumer(bridge_.get()); +} + +// Delegate callback. Closing the window means there is no more need +// for the me, the controller. +- (void)windowWillClose:(NSNotification*)notification { + [self autorelease]; +} + +- (void)updateVisibleRunState { + if (IPC::Logging::current()->Enabled()) + [startStopButton_ setTitle:@"Stop"]; + else + [startStopButton_ setTitle:@"Start"]; +} + +- (IBAction)startStop:(id)sender { + g_browser_process->SetIPCLoggingEnabled(!IPC::Logging::current()->Enabled()); + [self updateVisibleRunState]; +} + +- (IBAction)clear:(id)sender { + [dataController_ setContent:[NSMutableArray array]]; + [eventCount_ setStringValue:@"0"]; + [filteredEventCount_ setStringValue:@"0"]; + filteredEventCounter_ = 0; +} + +// Return YES if we should filter this out; else NO. +// Just to be clear, [@"any string" hasPrefix:@""] returns NO. +- (BOOL)filterOut:(CocoaLogData*)data { + NSString* name = [data message]; + if ((appCache_) && [name hasPrefix:@"AppCache"]) + return NO; + if ((view_) && [name hasPrefix:@"ViewMsg"]) + return NO; + if ((utilityHost_) && [name hasPrefix:@"UtilityHost"]) + return NO; + if ((viewHost_) && [name hasPrefix:@"ViewHost"]) + return NO; + if ((plugin_) && [name hasPrefix:@"PluginMsg"]) + return NO; + if ((npObject_) && [name hasPrefix:@"NPObject"]) + return NO; + if ((devTools_) && [name hasPrefix:@"DevTools"]) + return NO; + if ((pluginProcessing_) && [name hasPrefix:@"PluginProcessing"]) + return NO; + if ((userString1_) && ([name hasPrefix:[userStringTextField1_ stringValue]])) + return NO; + if ((userString2_) && ([name hasPrefix:[userStringTextField2_ stringValue]])) + return NO; + if ((userString3_) && ([name hasPrefix:[userStringTextField3_ stringValue]])) + return NO; + + // Special case the unknown type. + if ([name hasPrefix:@"type="]) + return NO; + + return YES; // filter out. +} + +- (void)log:(CocoaLogData*)data { + if ([self filterOut:data]) { + [filteredEventCount_ setStringValue:[NSString stringWithFormat:@"%d", + ++filteredEventCounter_]]; + return; + } + [dataController_ addObject:data]; + NSUInteger count = [[dataController_ arrangedObjects] count]; + // Uncomment if you want scroll-to-end behavior... but seems expensive. + // [tableView_ scrollRowToVisible:count-1]; + [eventCount_ setStringValue:[NSString stringWithFormat:@"%d", count]]; +} + +- (void)setDisplayViewMessages:(BOOL)display { + view_ = display; +} + +@end + +#endif // IPC_MESSAGE_LOG_ENABLED + diff --git a/chrome/browser/cocoa/about_ipc_controller_unittest.mm b/chrome/browser/cocoa/about_ipc_controller_unittest.mm new file mode 100644 index 0000000..cff2281 --- /dev/null +++ b/chrome/browser/cocoa/about_ipc_controller_unittest.mm @@ -0,0 +1,51 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import <Cocoa/Cocoa.h> + +#import "base/scoped_nsobject.h" +#import "chrome/browser/cocoa/about_ipc_controller.h" +#include "chrome/browser/cocoa/browser_test_helper.h" +#include "chrome/browser/cocoa/cocoa_test_helper.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "testing/platform_test.h" + +#if defined(IPC_MESSAGE_LOG_ENABLED) + +namespace { + +class AboutIPCControllerTest : public PlatformTest { + CocoaTestHelper cocoa_helper_; // Inits Cocoa, creates window, etc... +}; + +TEST_F(AboutIPCControllerTest, TestFilter) { + scoped_nsobject<AboutIPCController> controller( + [[AboutIPCController alloc] init]); + [controller window]; // force nib load. + IPC::LogData data; + + // Make sure generic names do NOT get filtered. + std::wstring names[] = { L"PluginProcessingIsMyLife", + L"ViewMsgFoo", + L"NPObjectHell" }; + for (unsigned int i = 0; i < arraysize(names); i++) { + data.message_name = names[i]; + scoped_nsobject<CocoaLogData> cdata([[CocoaLogData alloc] + initWithLogData:data]); + EXPECT_FALSE([controller filterOut:cdata.get()]); + } + + // Flip a checkbox, see it filtered, flip back, all is fine. + data.message_name = L"ViewMsgFoo"; + scoped_nsobject<CocoaLogData> cdata([[CocoaLogData alloc] + initWithLogData:data]); + [controller setDisplayViewMessages:NO]; + EXPECT_TRUE([controller filterOut:cdata.get()]); + [controller setDisplayViewMessages:YES]; + EXPECT_FALSE([controller filterOut:cdata.get()]); +} + +} // namespace + +#endif // IPC_MESSAGE_LOG_ENABLED diff --git a/chrome/browser/cocoa/about_ipc_dialog.h b/chrome/browser/cocoa/about_ipc_dialog.h new file mode 100644 index 0000000..e190f7a --- /dev/null +++ b/chrome/browser/cocoa/about_ipc_dialog.h @@ -0,0 +1,23 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_COCOA_ABOUT_IPC_DIALOG_H_ +#define CHROME_BROWSER_COCOA_ABOUT_IPC_DIALOG_H_ + +#include "ipc/ipc_message.h" + +#if defined(IPC_MESSAGE_LOG_ENABLED) + +namespace AboutIPCDialog { +// The dialog is a singleton. If the dialog is already opened, it won't do +// anything, so you can just blindly call this function all you want. +// RunDialog() is Called from chrome/browser/browser_about_handler.cc +// in response to an about:ipc URL. +void RunDialog(); +}; + + +#endif /* IPC_MESSAGE_LOG_ENABLED */ + +#endif /* CHROME_BROWSER_COCOA_ABOUT_IPC_DIALOG_H_ */ diff --git a/chrome/browser/cocoa/about_ipc_dialog.mm b/chrome/browser/cocoa/about_ipc_dialog.mm new file mode 100644 index 0000000..d9b9448f --- /dev/null +++ b/chrome/browser/cocoa/about_ipc_dialog.mm @@ -0,0 +1,21 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/cocoa/about_ipc_dialog.h" +#include "chrome/browser/cocoa/about_ipc_controller.h" + +#if defined(IPC_MESSAGE_LOG_ENABLED) + +namespace AboutIPCDialog { + +void RunDialog() { + // The controller gets deallocated when then window is closed, + // so it is safe to "fire and forget". + AboutIPCController* controller = [AboutIPCController sharedController]; + [[controller window] makeKeyAndOrderFront:controller]; +} + +}; // namespace AboutIPCDialog + +#endif // IPC_MESSAGE_LOG_ENABLED diff --git a/chrome/browser/renderer_host/browser_render_process_host.cc b/chrome/browser/renderer_host/browser_render_process_host.cc index fb91a80..4276efa 100644 --- a/chrome/browser/renderer_host/browser_render_process_host.cc +++ b/chrome/browser/renderer_host/browser_render_process_host.cc @@ -51,6 +51,8 @@ #include "chrome/renderer/render_process.h" #include "chrome/renderer/render_thread.h" #include "grit/generated_resources.h" +#include "ipc/ipc_logging.h" +#include "ipc/ipc_message.h" #include "ipc/ipc_switches.h" #if defined(OS_WIN) @@ -793,6 +795,12 @@ void BrowserRenderProcessHost::OnChannelConnected(int32 peer_pid) { #endif } } + +#if defined(IPC_MESSAGE_LOG_ENABLED) + bool enabled = IPC::Logging::current()->Enabled(); + Send(new ViewMsg_SetIPCLoggingEnabled(enabled)); +#endif + } // Static. This function can be called from any thread. diff --git a/chrome/browser/sandbox_policy.cc b/chrome/browser/sandbox_policy.cc index 13f4ee2..4be8a23 100644 --- a/chrome/browser/sandbox_policy.cc +++ b/chrome/browser/sandbox_policy.cc @@ -21,7 +21,6 @@ #include "chrome/common/chrome_switches.h" #include "chrome/common/debug_flags.h" #include "chrome/common/notification_service.h" -#include "ipc/ipc_logging.h" #include "sandbox/src/sandbox.h" #include "webkit/glue/plugins/plugin_list.h" @@ -180,21 +179,6 @@ bool AddGenericPolicy(sandbox::TargetPolicy* policy) { if (result != sandbox::SBOX_ALL_OK) return false; -#ifdef IPC_MESSAGE_LOG_ENABLED - // Add the policy for the IPC logging events. - result = policy->AddRule(sandbox::TargetPolicy::SUBSYS_SYNC, - sandbox::TargetPolicy::EVENTS_ALLOW_ANY, - IPC::Logging::GetEventName(true).c_str()); - if (result != sandbox::SBOX_ALL_OK) - return false; - - result = policy->AddRule(sandbox::TargetPolicy::SUBSYS_SYNC, - sandbox::TargetPolicy::EVENTS_ALLOW_ANY, - IPC::Logging::GetEventName(false).c_str()); - if (result != sandbox::SBOX_ALL_OK) - return false; -#endif - // Add the policy for debug message only in debug #ifndef NDEBUG std::wstring debug_message; diff --git a/chrome/browser/views/about_ipc_dialog.cc b/chrome/browser/views/about_ipc_dialog.cc index ea3c1c9..4ad5695 100644 --- a/chrome/browser/views/about_ipc_dialog.cc +++ b/chrome/browser/views/about_ipc_dialog.cc @@ -437,11 +437,11 @@ void AboutIPCDialog::ButtonPressed( if (tracking_) { track_toggle_->SetText(kStartTrackingLabel); tracking_ = false; - IPC::Logging::current()->Disable(); + g_browser_process->SetIPCLoggingEnabled(false); } else { track_toggle_->SetText(kStopTrackingLabel); tracking_ = true; - IPC::Logging::current()->Enable(); + g_browser_process->SetIPCLoggingEnabled(true); } track_toggle_->SchedulePaint(); } else if (button == clear_button_) { diff --git a/chrome/chrome.gyp b/chrome/chrome.gyp index 637b008..dda8b5c 100644 --- a/chrome/chrome.gyp +++ b/chrome/chrome.gyp @@ -898,6 +898,12 @@ 'browser/chromeos/status_area_view.h', 'browser/chromeos/touchpad.cc', 'browser/chromeos/touchpad.h', + 'browser/cocoa/about_ipc_bridge.h', + 'browser/cocoa/about_ipc_bridge.mm', + 'browser/cocoa/about_ipc_controller.h', + 'browser/cocoa/about_ipc_controller.mm', + 'browser/cocoa/about_ipc_dialog.h', + 'browser/cocoa/about_ipc_dialog.mm', 'browser/cocoa/about_window_controller.h', 'browser/cocoa/about_window_controller.mm', 'browser/cocoa/autocomplete_text_field.h', @@ -3102,6 +3108,7 @@ # put any pdfs down in the sources block below so pdfsqueeze runs on # them. 'app/nibs/About.xib', + 'app/nibs/AboutIPC.xib', 'app/nibs/BookmarkBar.xib', 'app/nibs/BookmarkBubble.xib', 'app/nibs/BookmarkEditor.xib', @@ -4107,6 +4114,7 @@ # It is safe to list */cocoa/* files in the "common" file list # without an explicit exclusion since gyp is smart enough to # exclude them from non-Mac builds. + 'browser/cocoa/about_ipc_controller_unittest.mm', 'browser/cocoa/about_window_controller_unittest.mm', 'browser/cocoa/autocomplete_text_field_cell_unittest.mm', 'browser/cocoa/autocomplete_text_field_editor_unittest.mm', diff --git a/chrome/common/child_process_host.cc b/chrome/common/child_process_host.cc index 5ac925a..f7fe2df 100644 --- a/chrome/common/child_process_host.cc +++ b/chrome/common/child_process_host.cc @@ -22,7 +22,6 @@ #include "chrome/common/process_watcher.h" #include "chrome/common/result_codes.h" #include "chrome/installer/util/google_update_settings.h" -#include "ipc/ipc_logging.h" #if defined(OS_LINUX) #include "base/linux_util.h" @@ -256,6 +255,12 @@ void ChildProcessHost::ListenerHook::OnMessageReceived( void ChildProcessHost::ListenerHook::OnChannelConnected(int32 peer_pid) { host_->opening_channel_ = false; host_->OnChannelConnected(peer_pid); + +#if defined(IPC_MESSAGE_LOG_ENABLED) + bool enabled = IPC::Logging::current()->Enabled(); + host_->Send(new PluginProcessMsg_SetIPCLoggingEnabled(enabled)); +#endif + host_->Send(new PluginProcessMsg_AskBeforeShutdown()); // Notify in the main loop of the connection. diff --git a/chrome/common/child_process_host.h b/chrome/common/child_process_host.h index 778b5a2..eaff476 100644 --- a/chrome/common/child_process_host.h +++ b/chrome/common/child_process_host.h @@ -8,6 +8,9 @@ #include <list> #include <string> +// Must be included early (e.g. before chrome/common/plugin_messages.h) +#include "ipc/ipc_logging.h" + #include "base/basictypes.h" #include "base/scoped_ptr.h" #include "chrome/browser/renderer_host/resource_dispatcher_host.h" diff --git a/chrome/common/child_thread.cc b/chrome/common/child_thread.cc index 8e9e90c..43da09a 100644 --- a/chrome/common/child_thread.cc +++ b/chrome/common/child_thread.cc @@ -11,6 +11,7 @@ #include "chrome/common/notification_service.h" #include "chrome/common/plugin_messages.h" #include "ipc/ipc_logging.h" +#include "ipc/ipc_message.h" #include "ipc/ipc_switches.h" #include "webkit/glue/webkit_glue.h" @@ -98,15 +99,19 @@ void ChildThread::OnMessageReceived(const IPC::Message& msg) { if (resource_dispatcher_->OnMessageReceived(msg)) return; - if (msg.type() == PluginProcessMsg_AskBeforeShutdown::ID) { - check_with_browser_before_shutdown_ = true; + bool handled = true; + IPC_BEGIN_MESSAGE_MAP(ChildThread, msg) + IPC_MESSAGE_HANDLER(PluginProcessMsg_AskBeforeShutdown, OnAskBeforeShutdown) + IPC_MESSAGE_HANDLER(PluginProcessMsg_Shutdown, OnShutdown) +#if defined(IPC_MESSAGE_LOG_ENABLED) + IPC_MESSAGE_HANDLER(PluginProcessMsg_SetIPCLoggingEnabled, + OnSetIPCLoggingEnabled) +#endif // IPC_MESSAGE_HANDLER + IPC_MESSAGE_UNHANDLED(handled = false) + IPC_END_MESSAGE_MAP() + + if (handled) return; - } - - if (msg.type() == PluginProcessMsg_Shutdown::ID) { - MessageLoop::current()->Quit(); - return; - } if (msg.routing_id() == MSG_ROUTING_CONTROL) { OnControlMessageReceived(msg); @@ -115,6 +120,23 @@ void ChildThread::OnMessageReceived(const IPC::Message& msg) { } } +void ChildThread::OnAskBeforeShutdown() { + check_with_browser_before_shutdown_ = true; +} + +void ChildThread::OnShutdown() { + MessageLoop::current()->Quit(); +} + +#if defined(IPC_MESSAGE_LOG_ENABLED) +void ChildThread::OnSetIPCLoggingEnabled(bool enable) { + if (enable) + IPC::Logging::current()->Enable(); + else + IPC::Logging::current()->Disable(); +} +#endif // IPC_MESSAGE_LOG_ENABLED + ChildThread* ChildThread::current() { return ChildProcess::current()->main_thread(); } diff --git a/chrome/common/child_thread.h b/chrome/common/child_thread.h index afcd803..9b37e19 100644 --- a/chrome/common/child_thread.h +++ b/chrome/common/child_thread.h @@ -10,6 +10,7 @@ #include "chrome/common/message_router.h" #include "chrome/common/resource_dispatcher.h" #include "ipc/ipc_sync_channel.h" +#include "ipc/ipc_message.h" class NotificationService; @@ -46,6 +47,12 @@ class ChildThread : public IPC::Channel::Listener, void OnProcessFinalRelease(); virtual void OnControlMessageReceived(const IPC::Message& msg) { } + virtual void OnAskBeforeShutdown(); + virtual void OnShutdown(); + +#ifdef IPC_MESSAGE_LOG_ENABLED + virtual void OnSetIPCLoggingEnabled(bool enable); +#endif IPC::SyncChannel* channel() { return channel_.get(); } diff --git a/chrome/common/logging_chrome.cc b/chrome/common/logging_chrome.cc index ee0caaa..ae0b48e 100644 --- a/chrome/common/logging_chrome.cc +++ b/chrome/common/logging_chrome.cc @@ -4,6 +4,24 @@ #include "build/build_config.h" +// Need to include this before most other files because it defines +// IPC_MESSAGE_LOG_ENABLED. We need to use it to define +// IPC_MESSAGE_MACROS_LOG_ENABLED so render_messages.h will generate the +// ViewMsgLog et al. functions. +#include "ipc/ipc_message.h" + +// On Windows, the about:ipc dialog shows IPCs; on POSIX, we hook up a +// logger in this file. (We implement about:ipc on Mac but implement +// the loggers here anyway). We need to do this real early to be sure +// IPC_MESSAGE_MACROS_LOG_ENABLED doesn't get undefined. +#if defined(OS_POSIX) && defined(IPC_MESSAGE_LOG_ENABLED) +#define IPC_MESSAGE_MACROS_LOG_ENABLED +#include "chrome/common/devtools_messages.h" +#include "chrome/common/plugin_messages.h" +#include "chrome/common/render_messages.h" +#include "chrome/common/worker_messages.h" +#endif + #if defined(OS_WIN) #include <windows.h> #endif @@ -25,16 +43,8 @@ #include "chrome/common/chrome_paths.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/env_vars.h" -#include "ipc/ipc_message.h" - -// On Windows, the about:ipc dialog shows IPCs; on POSIX, we hook up a -// logger in this file. -#if defined(OS_POSIX) && defined(IPC_MESSAGE_LOG_ENABLED) -#define IPC_MESSAGE_MACROS_LOG_ENABLED #include "ipc/ipc_logging.h" -#include "chrome/common/plugin_messages.h" -#include "chrome/common/render_messages.h" -#endif +#include "ipc/ipc_message.h" // When true, this means that error dialogs should not be shown. static bool dialogs_are_suppressed_ = false; diff --git a/chrome/common/plugin_messages_internal.h b/chrome/common/plugin_messages_internal.h index 3c64bcf..9049fa7 100644 --- a/chrome/common/plugin_messages_internal.h +++ b/chrome/common/plugin_messages_internal.h @@ -40,6 +40,13 @@ IPC_BEGIN_MESSAGES(PluginProcess) // process that it's safe to shutdown. IPC_MESSAGE_CONTROL0(PluginProcessMsg_Shutdown) +#if defined(IPC_MESSAGE_LOG_ENABLED) + // Tell the child process to begin or end IPC message logging. + // Like above, this is used by all ChildProcesses. + IPC_MESSAGE_CONTROL1(PluginProcessMsg_SetIPCLoggingEnabled, + bool /* on or off */) +#endif + IPC_END_MESSAGES(PluginProcess) diff --git a/chrome/common/render_messages_internal.h b/chrome/common/render_messages_internal.h index 22ba42a..ac124b5 100644 --- a/chrome/common/render_messages_internal.h +++ b/chrome/common/render_messages_internal.h @@ -26,6 +26,7 @@ #include "chrome/common/transport_dib.h" #include "chrome/common/view_types.h" #include "ipc/ipc_channel_handle.h" +#include "ipc/ipc_message.h" #include "ipc/ipc_message_macros.h" #include "third_party/skia/include/core/SkBitmap.h" #include "webkit/appcache/appcache_interfaces.h" @@ -733,6 +734,12 @@ IPC_BEGIN_MESSAGES(View) int32 /* the ID of the message we're replying to */, int64 /* the size of the given DB file */) +#if defined(IPC_MESSAGE_LOG_ENABLED) + // Tell the renderer process to begin or end IPC message logging. + IPC_MESSAGE_CONTROL1(ViewMsg_SetIPCLoggingEnabled, + bool /* on or off */) +#endif + //--------------------------------------------------------------------------- // Utility process messages: // These are messages from the browser to the utility process. They're here diff --git a/chrome/renderer/render_thread.cc b/chrome/renderer/render_thread.cc index d753556..7480523 100644 --- a/chrome/renderer/render_thread.cc +++ b/chrome/renderer/render_thread.cc @@ -41,6 +41,7 @@ #include "chrome/renderer/render_view.h" #include "chrome/renderer/renderer_webkitclient_impl.h" #include "chrome/renderer/user_script_slave.h" +#include "ipc/ipc_message.h" #include "webkit/api/public/WebColor.h" #include "webkit/api/public/WebCache.h" #include "webkit/api/public/WebKit.h" @@ -282,6 +283,10 @@ void RenderThread::OnControlMessageReceived(const IPC::Message& msg) { OnExtensionSetHostPermissions) IPC_MESSAGE_HANDLER(ViewMsg_Extension_SetL10nMessages, OnExtensionSetL10nMessages) +#if defined(IPC_MESSAGE_LOG_ENABLED) + IPC_MESSAGE_HANDLER(ViewMsg_SetIPCLoggingEnabled, + OnSetIPCLoggingEnabled) +#endif IPC_END_MESSAGE_MAP() } diff --git a/chrome/test/testing_browser_process.h b/chrome/test/testing_browser_process.h index bdfe555..22e106b 100644 --- a/chrome/test/testing_browser_process.h +++ b/chrome/test/testing_browser_process.h @@ -144,6 +144,9 @@ class TestingBrowserProcess : public BrowserProcess { virtual void CheckForInspectorFiles() {} virtual bool have_inspector_files() const { return true; } +#if defined(IPC_MESSAGE_LOG_ENABLED) + virtual void SetIPCLoggingEnabled(bool enable) {} +#endif private: NotificationService notification_service_; |