RESOLVED DUPLICATE of bug 60629 57617
[Qt][WK2] Implement PLUGIN_PROCESS
https://bugs.webkit.org/show_bug.cgi?id=57617
Summary [Qt][WK2] Implement PLUGIN_PROCESS
Balazs Kelemen
Reported 2011-04-01 05:31:07 PDT
Do it!
Attachments
Patch (31.76 KB, patch)
2011-04-01 06:50 PDT, Balazs Kelemen
no flags
Patch (21.64 KB, patch)
2011-04-08 19:27 PDT, Balazs Kelemen
no flags
Patch (22.45 KB, patch)
2011-04-14 08:12 PDT, Balazs Kelemen
no flags
Patch (25.86 KB, patch)
2011-04-27 08:50 PDT, Balazs Kelemen
menard: review-
Balazs Kelemen
Comment 1 2011-04-01 06:50:40 PDT
Balazs Kelemen
Comment 2 2011-04-01 06:55:40 PDT
Expect EWS redness because it has been created on top of the dependency patch.
Kenneth Rohde Christiansen
Comment 3 2011-04-01 06:56:07 PDT
Comment on attachment 87853 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=87853&action=review > Source/WebKit2/PluginProcess/PluginProcess.cpp:160 > +#elif PLATFORM(QT) > + int sockets[2]; > + if (socketpair(AF_UNIX, SOCK_DGRAM, 0, sockets) == -1) { > + qDebug() << "Creation of socket failed with errno:" << errno; Wouldn't this work for any UNIX? What about making a PluginProcessUNIX instead? > Source/WebKit2/UIProcess/Launcher/qt/ProcessLauncherQt.cpp:92 > + "QtWebProcess" : "QtPluginProcess"); I think that should be called QtWebPluginProcess not just plugin process. > Source/WebKit2/qt/EnvHttpProxyFactory.h:34 > +#include <QList> > +#include <QNetworkProxyFactory> > + > +namespace WebKit { > + > +class EnvHttpProxyFactory : public QNetworkProxyFactory { > +public: > + static void initializeProxy(); I would have done this splitting out as a separate patch > Source/WebKit2/qt/PluginMainQt.cpp:3 > + * Copyright (C) 2011 University of Szeged Don't you want a dot at the end?
Balazs Kelemen
Comment 4 2011-04-01 07:41:31 PDT
(In reply to comment #3) > (From update of attachment 87853 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=87853&action=review > > > Source/WebKit2/PluginProcess/PluginProcess.cpp:160 > > +#elif PLATFORM(QT) > > + int sockets[2]; > > + if (socketpair(AF_UNIX, SOCK_DGRAM, 0, sockets) == -1) { > > + qDebug() << "Creation of socket failed with errno:" << errno; > > Wouldn't this work for any UNIX? What about making a PluginProcessUNIX instead? Definitely this patch should not be Qt-only. Furthermore I would like a change that replacing the "PLATFORM(QT) || PLATFORM(GTK)" conditions in IPC code with smg new macro flag (UNIX_IPC is my candidate). This should be handled first (maybe in #49791?). I just uploaded this patch now for feedback. > > > Source/WebKit2/UIProcess/Launcher/qt/ProcessLauncherQt.cpp:92 > > + "QtWebProcess" : "QtPluginProcess"); > > I think that should be called QtWebPluginProcess not just plugin process. Yep. > > > Source/WebKit2/qt/EnvHttpProxyFactory.h:34 > > +#include <QList> > > +#include <QNetworkProxyFactory> > > + > > +namespace WebKit { > > + > > +class EnvHttpProxyFactory : public QNetworkProxyFactory { > > +public: > > + static void initializeProxy(); > > I would have done this splitting out as a separate patch Ok. > > > Source/WebKit2/qt/PluginMainQt.cpp:3 > > + * Copyright (C) 2011 University of Szeged > > Don't you want a dot at the end? Yep. I will return to this after the UNIX_IPC thing will be done.
Balazs Kelemen
Comment 5 2011-04-08 19:27:28 PDT
Carlos Garcia Campos
Comment 6 2011-04-11 01:04:05 PDT
Comment on attachment 88915 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=88915&action=review The patch doesn't seem to apply to current trunk > Source/WebKit2/PluginProcess/PluginProcess.cpp:161 > + qDebug() << "Creation of socket failed with errno:" << errno; This looks qt specific
Carlos Garcia Campos
Comment 7 2011-04-11 01:05:50 PDT
(In reply to comment #6) > (From update of attachment 88915 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=88915&action=review > > The patch doesn't seem to apply to current trunk Sorry, I haven't noticed this patch depends on patch attached to bug #55719
Balazs Kelemen
Comment 8 2011-04-11 04:32:19 PDT
(In reply to comment #6) > (From update of attachment 88915 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=88915&action=review > > The patch doesn't seem to apply to current trunk > > > Source/WebKit2/PluginProcess/PluginProcess.cpp:161 > > + qDebug() << "Creation of socket failed with errno:" << errno; > > This looks qt specific Good catch. I will fix it after the dependency patch has been landed.
Balazs Kelemen
Comment 9 2011-04-14 08:12:34 PDT
WebKit Review Bot
Comment 10 2011-04-14 08:13:34 PDT
Attachment 89585 [details] did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'ChangeLog', u'Source/WebKit.pro', u'Source..." exit_code: 1 Source/WebKit2/qt/PluginMainQt.cpp:27: Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted. [build/include_order] [4] Total errors found: 1 in 15 files If any of these errors are false positives, please file a bug against check-webkit-style.
Balazs Kelemen
Comment 11 2011-04-14 08:23:51 PDT
(In reply to comment #10) > Attachment 89585 [details] did not pass style-queue: > > Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'ChangeLog', u'Source/WebKit.pro', u'Source..." exit_code: 1 > > Source/WebKit2/qt/PluginMainQt.cpp:27: Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted. [build/include_order] [4] > Total errors found: 1 in 15 files > > > If any of these errors are false positives, please file a bug against check-webkit-style. Need to be fixed by s/<config.h>/"config.h"/ I would handle this before landing if the patch is good otherwise.
Balazs Kelemen
Comment 12 2011-04-26 10:51:10 PDT
ping
Andreas Kling
Comment 13 2011-04-26 16:47:12 PDT
Comment on attachment 89585 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=89585&action=review > Source/WebKit2/Platform/CoreIPC/Attachment.h:53 > - Attachment(int fileDescriptor, size_t); > + Attachment(int fileDescriptor, size_t = 0); This API look rather strange, it should be split into two constructors. > Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp:-72 > - ASSERT(!isNull()); > - Benjamin: we are in SharedMemoryUnix, so the assert totally make sense. So Either you should have a new encoder for Arguments (with new asserts depending on the type), or you need to fix the broken assertions. > Source/WebKit2/PluginProcess/PluginProcess.cpp:48 > +// FIXME: the LOG macro don't work without that. Should be fixed there. > +using namespace WebCore; Benjamin: Should you rely add a dependency to WebCore here? You don't want to link to WebCore. > Source/WebKit2/PluginProcess/PluginProcess.cpp:190 > + ASSERT_NOT_REACHED(); > + return; Benjamin: you have cleaning code to close the socket on the previous call to fcntl, but not on this one. > Source/WebKit2/PluginProcess/PluginProcess.cpp:200 > - ASSERT_NOT_REACHED(); > + notImplemented(); With your change it does not assert in debug. The notImplemented() instead of the comment is a good idea. > Source/WebKit2/PluginProcess/qt/PluginControllerProxyQt.cpp:48 > -void PluginControllerProxy::platformGeometryDidChange(const IntRect& frameRect, const IntRect&) > +void PluginControllerProxy::platformGeometryDidChange() Benjamin: ??? > Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp:36 > +#include <QDebug> Benjamin: ??? > Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp:38 > +#include <QtGlobal> Benjamin: ??? > Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp:50 > + QApplication* app = new QApplication(argc, argv); Benjamin: why are you creating that on the heap (and leaking it?)?
Balazs Kelemen
Comment 14 2011-04-27 04:20:57 PDT
(In reply to comment #13) > (From update of attachment 89585 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=89585&action=review > > > Source/WebKit2/Platform/CoreIPC/Attachment.h:53 > > - Attachment(int fileDescriptor, size_t); > > + Attachment(int fileDescriptor, size_t = 0); > > This API look rather strange, it should be split into two constructors. Accept. > > > Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp:-72 > > - ASSERT(!isNull()); > > - > > Benjamin: we are in SharedMemoryUnix, so the assert totally make sense. > So Either you should have a new encoder for Arguments (with new asserts depending on the type), or you need to fix the broken assertions. As I wrote in the changelog this change was made because in PluginProxy::geometryDidChange we pass a null Handle if we do not need to allocate a new backing store. It has nothing to do with the Attachment changes. > > > Source/WebKit2/PluginProcess/PluginProcess.cpp:48 > > +// FIXME: the LOG macro don't work without that. Should be fixed there. > > +using namespace WebCore; > > Benjamin: Should you rely add a dependency to WebCore here? You don't want to link to WebCore. This is in the core part (i.e. the webkit library), not in the binary of the plugin process. Naturally this depends on WebCore. > > > Source/WebKit2/PluginProcess/PluginProcess.cpp:190 > > + ASSERT_NOT_REACHED(); > > + return; > > Benjamin: you have cleaning code to close the socket on the previous call to fcntl, but not on this one. Accept. > > > Source/WebKit2/PluginProcess/PluginProcess.cpp:200 > > - ASSERT_NOT_REACHED(); > > + notImplemented(); > > With your change it does not assert in debug. The notImplemented() instead of the comment is a good idea. Do you mean keep the ASSERT_NOT_REACHED()? Actually the notImplemented() is also a debug only thing. I can keep the assert but in this case an ASSERT_WITH_MESSAGE makes more sense. > > > Source/WebKit2/PluginProcess/qt/PluginControllerProxyQt.cpp:48 > > -void PluginControllerProxy::platformGeometryDidChange(const IntRect& frameRect, const IntRect&) > > +void PluginControllerProxy::platformGeometryDidChange() > > Benjamin: ??? This is a build fix. > > > Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp:36 > > +#include <QDebug> > > Benjamin: ??? It is used. What is the question? :) > > > Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp:38 > > +#include <QtGlobal> > > Benjamin: ??? For Q_DECL_EXPORT. > > > Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp:50 > > + QApplication* app = new QApplication(argc, argv); > > Benjamin: why are you creating that on the heap (and leaking it?)? Accept.
Balazs Kelemen
Comment 15 2011-04-27 08:50:12 PDT
WebKit Review Bot
Comment 16 2011-04-27 08:52:56 PDT
Attachment 91292 [details] did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'ChangeLog', u'Source/WebKit.pro', u'Source..." exit_code: 1 Source/WebKit2/Platform/CoreIPC/Attachment.h:69: The parameter name "size" adds no information, so it should be removed. [readability/parameter_name] [5] Total errors found: 1 in 18 files If any of these errors are false positives, please file a bug against check-webkit-style.
Carlos Garcia Campos
Comment 17 2011-05-04 05:06:51 PDT
Comment on attachment 91292 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=91292&action=review > Source/WebKit2/PluginProcess/PluginProcess.cpp:45 > +#if PLATFORM(QT) > +#include <QDebug> > +#include <errno.h> > +#include <fcntl.h> > +#include <sys/resource.h> > +#include <sys/socket.h> > +#include <unistd.h> This should be splitted into PLATFORM(QT) with QDebug only and everythying else in another #ifdef using USE(UNIX_DOMAIN_SOCKETS) > Source/WebKit2/PluginProcess/PluginProcess.cpp:165 > + qDebug() << "Creation of socket failed with errno:" << errno; This is still qt specific
Alexis Menard (darktears)
Comment 18 2011-05-10 15:05:32 PDT
Comment on attachment 91292 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=91292&action=review > Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp:-71 > - ASSERT(!isNull()); Why? > Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp:-91 > - ASSERT(!isNull()); Why? > Source/WebKit2/PluginProcess/PluginProcess.cpp:40 > +#include <QDebug> Please remove. >> Source/WebKit2/PluginProcess/PluginProcess.cpp:165 >> + qDebug() << "Creation of socket failed with errno:" << errno; > > This is still qt specific And even Qt specific we don't put qDebugs. Please remove. > Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp:37 > +#include <QDebug> Please remove. > Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp:64 > + qDebug() << "Error: wrong number of arguments."; Please remove. > Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp:71 > + qDebug() << "Error: connection identifier wrong."; Please remove.
Carlos Garcia Campos
Comment 19 2011-05-11 03:32:57 PDT
Comment on attachment 91292 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=91292&action=review > Source/WebKit2/ChangeLog:29 > + Adjusted to the changes in Attachment. > + Remove assertions that check that the Handle is not null. > + In PluginProxy::geometryDidChange we pass a null Handle if > + we do not need to allocate a new backing store. This is not possible with our current ConnectionUnix impementation. Handles are sent as attachments using control messages. sendmsg() fails with EBADF when an invalid file descriptor (-1) is passed. Because of this, geometryDidChange is only received the first time in the plugin process, then a -1 handle is passed and sendmsg() always fails.
Balazs Kelemen
Comment 20 2011-05-13 08:08:30 PDT
Thanks for the review! It's a timed out reaction and this patch is obsolete now but I have a wish and a question. (In reply to comment #18) > (From update of attachment 91292 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=91292&action=review > > > Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp:-71 > > - ASSERT(!isNull()); > > Why? > > > Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp:-91 > > - ASSERT(!isNull()); > > Why? Noem has also asked about these and it was explained in the ChangeLog both the first and the second time. Although the change is wrong as Carlos pointed out I would ask you guys to read the ChangeLog when reviewing. It takes a lot of time (at least for me) to write a ChangeLog that correctly explain the change so at least we should use it. > > > Source/WebKit2/PluginProcess/PluginProcess.cpp:40 > > +#include <QDebug> > > Please remove. > > >> Source/WebKit2/PluginProcess/PluginProcess.cpp:165 > >> + qDebug() << "Creation of socket failed with errno:" << errno; > > > > This is still qt specific > > And even Qt specific we don't put qDebugs. Please remove. I'm surprised because there is a lot of qDebug in our codebase. So, what should I use for situations like this?
Balazs Kelemen
Comment 21 2011-05-13 08:11:36 PDT
> > Noem has also asked about these and it was explained in the ChangeLog both the first and the second time. Sorry, it was Benjamin of course.
Balazs Kelemen
Comment 22 2011-08-25 01:16:28 PDT
*** This bug has been marked as a duplicate of bug 60629 ***
Note You need to log in before you can comment on or make changes to this bug.