diff -r 000000000000 -r dd21522fd290 webengine/osswebengine/WebKitTools/Drosera/win/DebuggerApplication.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webengine/osswebengine/WebKitTools/Drosera/win/DebuggerApplication.cpp Mon Mar 30 12:54:55 2009 +0300 @@ -0,0 +1,121 @@ +/* + * Copyright (C) 2007 Apple, Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "DebuggerApplication.h" + +// ------------------------------------------------------------------------------------------------------------ +// FIXME This whole file needs to be re-written for win. However I'm leaving the functions here so I know +// what still needs to be done. Please ignore this code for now I have not looked at it closely. +// ------------------------------------------------------------------------------------------------------------ + +//#include +//void DebuggerApplication::applicationDidFinishLaunching(NSNotification* ) // Get's called after main and the app has been created from the Nibs (called before applicationDidFinishLaunching) +//{ +// WebCoreStatistics.setShouldPrintExceptions(true); //WebKit + + // Adding functions to be associated with notifications? + // Need some way to get/handle notifications (JS?) +// [[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(serverLoaded:) name:WebScriptDebugServerDidLoadNotification object:nil]; +// [[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(serverLoaded:) name:WebScriptDebugServerQueryReplyNotification object:nil]; +// [[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(serverUnloaded:) name:WebScriptDebugServerWillUnloadNotification object:nil]; +// [[NSDistributedNotificationCenter defaultCenter] postNotificationName:WebScriptDebugServerQueryNotification object:nil]; + +//#pragma mark - +//#pragma mark Server Detection Callbacks + +void DebuggerApplication::serverLoaded() +{ + // Get the process you are debugging +// int processId = [notification.userInfo(WebScriptDebugServerProcessIdentifierKey).(intValue); + // make sure THIS is not the process + //if (processId == [[NSProcessInfo processInfo] processIdentifier]) + // return; + + //Get the server info from passed in notification? + //check if info is in the server first + m_knownServerNames->add(1, "Fake Server"); // setObject:info forKey:[notification object]]; +} + +void DebuggerApplication::serverUnloaded() +{ + // remove passed in server + m_knownServerNames->remove(1); +} + +//#pragma mark - +//#pragma mark Attach Panel Actions + +void DebuggerApplication::attach(int sender) // actually attach Drosera to the WebKit app. +{ + //Check that there are servers + + // get selected server + unsigned int row = sender; //[[attachTable selectedRowIndexes] firstIndex]; + std::string key = m_knownServerNames->get(row); + +// // DebuggerDocument will release on close +// DebuggerDocument *document = [[DebuggerDocument alloc] initWithServerName:key]; +// [document showWindow:sender]; +} + +//#pragma mark - +//#pragma mark Table View Delegate + +// How will delegates work in C++? +//int numberOfRowsInTableView(NSTableView* tableView) // delegate. Returns number of rows in table. duh. +int DebuggerApplication::numberOfRowsInTableView() const +{ + return m_knownServerNames->size(); +} + +std::string DebuggerApplication::tableView()//(NSTableView* tableView, NSTableColumn* tableColumn, int row) // delegate. Called when table is displayed +{ + return ""; +} + +void DebuggerApplication::tableView(/*(NSTableView* tableView, ID cell, NSTableColumn* tableColumn,*/ int row) // delegate. Called when table is displayed, displays the icon in the col/row ? +{ + std::string key = m_knownServerNames->get(row); +// NSMutableDictionary *info = [m_knownServerNames objectForKey:key]; +// string *processName = [info objectForKey:WebScriptDebugServerProcessNameKey]; +// NSImage *icon = [info objectForKey:@"icon"]; + +// if (!icon) { +// NSString *path = [[NSWorkspace sharedWorkspace] fullPathForApplication:processName]; +// if (path) icon = [[NSWorkspace sharedWorkspace] iconForFile:path]; +// if (!icon) icon = [[NSWorkspace sharedWorkspace] iconForFileType:@"app"]; +// if (icon) [info setObject:icon forKey:@"icon"]; +// [icon setScalesWhenResized:YES]; +// [icon setSize:NSMakeSize(32, 32)]; +// } + +// [cell setImage:icon]; +// [cell setTitle:processName]; +} +