diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-05-07 11:21:11 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-05-07 11:21:11 +0200 |
commit | 2cf6c8816a73e0132bd8fa3b509d62d7c51b6e47 (patch) | |
tree | 988e8c5b116dd0466244ae2fe5af8ee9be926d76 /Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp | |
parent | dd91e772430dc294e3bf478c119ef8d43c0a3358 (diff) | |
download | qtwebkit-2cf6c8816a73e0132bd8fa3b509d62d7c51b6e47.tar.gz |
Imported WebKit commit 7e538425aa020340619e927792f3d895061fb54b (http://svn.webkit.org/repository/webkit/trunk@116286)
Diffstat (limited to 'Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp')
-rw-r--r-- | Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp | 79 |
1 files changed, 60 insertions, 19 deletions
diff --git a/Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp b/Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp index d3a0ec3e2..8cb6bcdf5 100644 --- a/Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp +++ b/Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp @@ -1,5 +1,6 @@ /* * Copyright (C) 2010, 2011 Nokia Inc. All rights reserved. + * Copyright (C) 2011 University of Szeged. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -24,44 +25,84 @@ */ #include "config.h" -#include "PluginProcessMain.h" #if ENABLE(PLUGIN_PROCESS) +#include "PluginProcessMain.h" -#include "CommandLine.h" +#include "NetscapePluginModule.h" #include "PluginProcess.h" -#include <WebCore/NotImplemented.h> +#include <QDebug> +#include <QGuiApplication> +#include <QStringList> +#include <QtGlobal> #include <WebCore/RunLoop.h> #include <runtime/InitializeThreading.h> #include <wtf/MainThread.h> -#include <wtf/RetainPtr.h> -#include <wtf/text/CString.h> -#include <wtf/text/WTFString.h> - -#define SHOW_CRASH_REPORTER 1 +#include <wtf/Threading.h> using namespace WebCore; namespace WebKit { -int PluginProcessMain(const CommandLine& commandLine) +static void messageHandler(QtMsgType type, const char* message) { - String serviceName = commandLine["servicename"]; - if (serviceName.isEmpty()) - return EXIT_FAILURE; + if (type == QtCriticalMsg) { + fprintf(stderr, "%s\n", message); + return; + } + + // Do nothing +} -#if !SHOW_CRASH_REPORTER - // Installs signal handlers that exit on a crash so that CrashReporter does not show up. - signal(SIGILL, _exit); - signal(SIGFPE, _exit); - signal(SIGBUS, _exit); - signal(SIGSEGV, _exit); -#endif +static bool initializeGtk() +{ + QLibrary gtkLibrary(QLatin1String("libgtk-x11-2.0"), 0); + if (!gtkLibrary.load()) + return false; + typedef void* (*gtk_init_ptr)(void*, void*); + gtk_init_ptr gtkInit = reinterpret_cast<gtk_init_ptr>(gtkLibrary.resolve("gtk_init")); + if (!gtkInit) + return false; + gtkInit(0, 0); + return true; +} + +Q_DECL_EXPORT int PluginProcessMain(int argc, char** argv) +{ + QByteArray suppressOutput = qgetenv("QT_WEBKIT_SUPPRESS_WEB_PROCESS_OUTPUT"); + if (!suppressOutput.isEmpty() && suppressOutput != "0") + qInstallMsgHandler(messageHandler); + + QGuiApplication app(argc, argv); + + // Workaround the issue that some versions of flash does not initialize Gtk properly. + if (!initializeGtk()) + return EXIT_FAILURE; JSC::initializeThreading(); WTF::initializeMainThread(); + + if (argc <= 1) + return EXIT_FAILURE; + + if (app.arguments().at(1) == QLatin1String("-scanPlugin")) { + if (argc != 3) + return EXIT_FAILURE; + String pluginPath(app.arguments().at(2)); + if (!NetscapePluginModule::scanPlugin(pluginPath)) + return EXIT_FAILURE; + return EXIT_SUCCESS; + } + RunLoop::initializeMainRunLoop(); + // Create the connection. + bool isNumber = false; + int identifier = app.arguments().at(1).toInt(&isNumber, 10); + if (!isNumber) + return EXIT_FAILURE; + WebKit::PluginProcess::shared().initialize(identifier, RunLoop::main()); + RunLoop::run(); return 0; |