diff options
Diffstat (limited to 'WebKit/android/wds/Command.cpp')
-rw-r--r-- | WebKit/android/wds/Command.cpp | 154 |
1 files changed, 0 insertions, 154 deletions
diff --git a/WebKit/android/wds/Command.cpp b/WebKit/android/wds/Command.cpp deleted file mode 100644 index bd8536f..0000000 --- a/WebKit/android/wds/Command.cpp +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Copyright 2008, The Android Open Source Project - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * 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. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``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 THE COPYRIGHT OWNER OR - * 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. - */ - -#define LOG_TAG "wds" -#include "config.h" - -#include "AndroidLog.h" -#include "Command.h" -#include "Connection.h" -#include "DebugServer.h" -#include "Frame.h" -#include "RenderTreeAsText.h" -#include "RenderView.h" -#include "WebViewCore.h" -#include <utils/Log.h> -#include <wtf/text/CString.h> - -#if ENABLE(WDS) - -using namespace WebCore; - -namespace android { - -namespace WDS { - -//------------------------------------------------------------------------------ -// Actual commands -- XXX should be moved somewhere else -//------------------------------------------------------------------------------ -static bool callDumpRenderTree(const Frame* frame, const Connection* conn) { - CString str = externalRepresentation(frame->contentRenderer()).latin1(); - conn->write(str.data(), str.length()); - return true; -} - -static bool callDumpDomTree(const Frame* frame, const Connection* conn) { - WebViewCore::getWebViewCore(frame->view())->dumpDomTree(true); - - FILE* f = fopen(DOM_TREE_LOG_FILE, "r"); - if (!f) { - conn->write("Dom tree written to logcat\n"); - } else { - char buf[512]; - while (true) { - int nread = fread(buf, 1, sizeof(buf), f); - if (nread <= 0) - break; - conn->write(buf, nread); - } - fclose(f); - } - return true; -} - -class WebCoreHandler : public Handler { -public: - virtual void post(TargetThreadFunction func, void* v) const { - callOnMainThread(func, v); - } -}; -static WebCoreHandler s_webcoreHandler; - -//------------------------------------------------------------------------------ -// End command section -//------------------------------------------------------------------------------ - -class InternalCommand : public Command { -public: - InternalCommand(const Command* comm, const Frame* frame, - const Connection* connection) - : Command(*comm) - , m_frame(frame) - , m_connection(connection) {} - virtual ~InternalCommand() { delete m_connection; } - - void doCommand() const { - LOGD("Executing command '%s' (%s)", m_name, m_description); - if (!m_dispatch(m_frame, m_connection)) - // XXX: Have useful failure messages - m_connection->write("EPIC FAIL!\n", 11); - } - -private: - const Frame* m_frame; - const Connection* m_connection; -}; - -static void commandDispatcher(void* v) { - InternalCommand* c = static_cast<InternalCommand*>(v); - c->doCommand(); - delete c; -} - -void Command::dispatch() { - m_handler.post(commandDispatcher, this); -} - -Vector<const Command*>* Command::s_commands; - -void Command::Init() { - // Do not initialize twice. - if (s_commands) - return; - // XXX: Move this somewhere else. - s_commands = new Vector<const Command*>(); - s_commands->append(new Command("DDOM", "Dump Dom Tree", - callDumpDomTree, s_webcoreHandler)); - s_commands->append(new Command("DDRT", "Dump Render Tree", - callDumpRenderTree, s_webcoreHandler)); -} - -Command* Command::Find(const Connection* conn) { - char buf[COMMAND_LENGTH]; - if (conn->read(buf, sizeof(buf)) != COMMAND_LENGTH) - return NULL; - - // Linear search of commands. TODO: binary search when more commands are - // added. - Vector<const Command*>::const_iterator i = s_commands->begin(); - Vector<const Command*>::const_iterator end = s_commands->end(); - while (i != end) { - if (strncmp(buf, (*i)->name(), sizeof(buf)) == 0) - return new InternalCommand(*i, server()->getFrame(0), conn); - i++; - } - return NULL; -} - -} // end namespace WDS - -} // end namespace android - -#endif |