WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-60722-20110512215609.patch (text/plain), 11.81 KB, created by
Robert Hogan
on 2011-05-12 13:56:11 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Robert Hogan
Created:
2011-05-12 13:56:11 PDT
Size:
11.81 KB
patch
obsolete
>Subversion Revision: 86170 >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 8ca598d7788e38a38c6e16ee8e3710f353776dda..185e7eb505832b9b2c87f34c46069219cef1f44f 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,21 @@ >+2011-05-12 Robert Hogan <robert@webkit.org> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ [Qt] fix http/tests/plugins/plugin-document-has-focus.html >+ >+ For some reason the platform-independent expected result has >+ no newline at the end of the file. The unix test plugin also >+ reports the event from a different line. These are harmless >+ differences, so create platform-specific result. >+ >+ Note that nearly every platform skips this test at the moment. >+ >+ https://bugs.webkit.org/show_bug.cgi?id=60722 >+ >+ * platform/qt/Skipped: >+ * platform/qt/http/tests/plugins/plugin-document-has-focus-expected.txt: Added. >+ > 2011-05-10 Kenji Imasaki <imasaki@chromium.org> > > Reviewed by David Levin. >diff --git a/LayoutTests/platform/qt/Skipped b/LayoutTests/platform/qt/Skipped >index dc0f6be2f720e6e1c7488bc35451106b1de6ab53..34dc7a8f0e072c8510288a97d13fc47766b81550 100644 >--- a/LayoutTests/platform/qt/Skipped >+++ b/LayoutTests/platform/qt/Skipped >@@ -386,8 +386,6 @@ plugins/embed-attributes-style.html > plugins/embed-attributes-setting.html > fast/dom/object-embed-plugin-scripting.html > plugins/plugin-initiate-popup-window.html >-# ---- to be reviewed >-http/tests/plugins/plugin-document-has-focus.html > > # [Qt] plugins/keyboard-events.html fails after r72717 > # https://bugs.webkit.org/show_bug.cgi?id=50050 >diff --git a/LayoutTests/platform/qt/http/tests/plugins/plugin-document-has-focus-expected.txt b/LayoutTests/platform/qt/http/tests/plugins/plugin-document-has-focus-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..71f7f16cf6999382c9bbe0f6c70d754f586d6fa0 >--- /dev/null >+++ b/LayoutTests/platform/qt/http/tests/plugins/plugin-document-has-focus-expected.txt >@@ -0,0 +1,3 @@ >+CONSOLE MESSAGE: line 0: PLUGIN: keyDown 'a' >+CONSOLE MESSAGE: line 0: PLUGIN: keyUp 'a' >+This tests that a full page plugin gets keyboard focus without the need to first click it. >diff --git a/Source/WebKit/qt/ChangeLog b/Source/WebKit/qt/ChangeLog >index 5bb226f8e87f8b86b153474e0fba44c1d0f48bcc..949f6e54b5fa21078c2ed0f9b18b8900751d5a6e 100644 >--- a/Source/WebKit/qt/ChangeLog >+++ b/Source/WebKit/qt/ChangeLog >@@ -1,3 +1,19 @@ >+2011-05-12 Robert Hogan <robert@webkit.org> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ [Qt] fix http/tests/plugins/plugin-document-has-focus.html >+ https://bugs.webkit.org/show_bug.cgi?id=60722 >+ >+ QWebPage::setView() will display the browser window, so >+ implement a private version that does just enough to >+ satisfy EventSender's requirement to install an event >+ filter on a page's web view. >+ >+ * WebCoreSupport/DumpRenderTreeSupportQt.cpp: >+ (DumpRenderTreeSupportQt::setView): >+ * WebCoreSupport/DumpRenderTreeSupportQt.h: >+ > 2011-05-10 Ademar de Souza Reis Jr. <ademar.reis@openbossa.org> > > Reviewed by Csaba Osztrogonác. >diff --git a/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.cpp b/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.cpp >index acde156d23c001697d459c1aed77c8c261ffcee9..a221be80f26ec6e7dacc79ae574f4637ed5d9283 100644 >--- a/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.cpp >+++ b/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.cpp >@@ -1136,6 +1136,11 @@ void DumpRenderTreeSupportQt::confirmComposition(QWebPage* page, const char* tex > editor->insertText(String::fromUTF8(text), 0); > } > >+void DumpRenderTreeSupportQt::setView(QWebPage* page, QWidget* view) >+{ >+ page->d->view = view; >+} >+ > // Provide a backward compatibility with previously exported private symbols as of QtWebKit 4.6 release > > void QWEBKIT_EXPORT qt_resumeActiveDOMObjects(QWebFrame* frame) >diff --git a/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.h b/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.h >index 5c189ea673752a39c0162c8b41daf60005f868f6..3d19de8ae7fd7967d3dcaa81e12c1a6f054cee58 100644 >--- a/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.h >+++ b/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.h >@@ -107,6 +107,7 @@ public: > static void setCaretBrowsingEnabled(QWebPage* page, bool value); > static void setMediaType(QWebFrame* qframe, const QString& type); > static void setDumpRenderTreeModeEnabled(bool b); >+ static void setView(QWebPage*, QWidget* view); > > static void garbageCollectorCollect(); > static void garbageCollectorCollectOnAlternateThread(bool waitUntilDone); >diff --git a/Tools/ChangeLog b/Tools/ChangeLog >index dab9383a0d95d337b5fc463e200416bfb9b55dbf..8d6f00045d49502c9bf9d385e27963e2a69c4e2f 100644 >--- a/Tools/ChangeLog >+++ b/Tools/ChangeLog >@@ -1,3 +1,29 @@ >+2011-05-12 Robert Hogan <robert@webkit.org> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ [Qt] fix http/tests/plugins/plugin-document-has-focus.html >+ >+ The support for this test added to the unix test plugin here >+ may allow other platforms to pass it (nearly everyone >+ skips it). On Qt it required a bit of trickiness with >+ the page's EventSender object to get it working fully though, >+ so only unskipping Qt here. >+ >+ https://bugs.webkit.org/show_bug.cgi?id=60722 >+ >+ * DumpRenderTree/qt/DumpRenderTreeQt.cpp: >+ (WebCore::WebPage::WebPage): >+ (WebCore::WebPage::eventSender): >+ (WebCore::DumpRenderTree::DumpRenderTree): >+ (WebCore::DumpRenderTree::initJSObjects): >+ (WebCore::DumpRenderTree::createWindow): >+ * DumpRenderTree/qt/DumpRenderTreeQt.h: >+ * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp: >+ (webkit_test_plugin_new_instance): >+ (webkit_test_plugin_set_window): >+ (webkit_test_plugin_handle_event): >+ > 2011-05-10 David Levin <levin@chromium.org> > > Reviewed by Shinichiro Hamaji. >diff --git a/Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp b/Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp >index 2bb7aa5d248b3d9621b5bf5d3de87aba84dcf5dd..73ed1f432dc16c6ccf8d5517e2693833fbee4e29 100644 >--- a/Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp >+++ b/Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp >@@ -136,6 +136,7 @@ public: > WebPage::WebPage(QObject* parent, DumpRenderTree* drt) > : QWebPage(parent) > , m_webInspector(0) >+ , m_eventSender(0) > , m_drt(drt) > { > QWebSettings* globalSettings = QWebSettings::globalSettings(); >@@ -169,6 +170,14 @@ WebPage::~WebPage() > delete m_webInspector; > } > >+EventSender* WebPage::eventSender() >+{ >+ if (!m_eventSender) >+ m_eventSender = new EventSender(this); >+ return m_eventSender; >+} >+ >+ > QWebInspector* WebPage::webInspector() > { > if (!m_webInspector) { >@@ -464,7 +473,7 @@ DumpRenderTree::DumpRenderTree() > connect(m_controller, SIGNAL(geolocationPermissionSet()), this, SLOT(geolocationPermissionSet())); > > connect(m_controller, SIGNAL(done()), this, SLOT(dump())); >- m_eventSender = new EventSender(m_page); >+ m_eventSender = m_page->eventSender(); > m_textInputController = new TextInputController(m_page); > m_plainTextController = new PlainTextController(m_page); > m_gcController = new GCController(m_page); >@@ -775,7 +784,9 @@ void DumpRenderTree::initJSObjects() > QWebFrame *frame = qobject_cast<QWebFrame*>(sender()); > Q_ASSERT(frame); > frame->addToJavaScriptWindowObject(QLatin1String("layoutTestController"), m_controller); >- frame->addToJavaScriptWindowObject(QLatin1String("eventSender"), m_eventSender); >+ // Each page has its own event sender object, as it must install an event filter in that page's view >+ if (frame->page()) >+ frame->addToJavaScriptWindowObject(QLatin1String("eventSender"), qobject_cast<WebPage*>(frame->page())->eventSender()); > frame->addToJavaScriptWindowObject(QLatin1String("textInputController"), m_textInputController); > frame->addToJavaScriptWindowObject(QLatin1String("GCController"), m_gcController); > frame->addToJavaScriptWindowObject(QLatin1String("plainText"), m_plainTextController); >@@ -1097,6 +1108,10 @@ QWebPage *DumpRenderTree::createWindow() > QObject* container = new QObject(m_mainView); > // create a QWebPage we want to return > QWebPage* page = static_cast<QWebPage*>(new WebPage(container, this)); >+ // QWebPage::setView() will display the page, so use a minimal version >+ // that is just enough to allow EventSender to interact with the page's view >+ DumpRenderTreeSupportQt::setView(page, m_mainView); >+ > // gets cleaned up in closeRemainingWindows() > windows.append(container); > >diff --git a/Tools/DumpRenderTree/qt/DumpRenderTreeQt.h b/Tools/DumpRenderTree/qt/DumpRenderTreeQt.h >index cb66296dc063bca184ca1e03c608993c880ae0c1..20811d795d6a80981d83a0aa0b9bd34510c9f6ee 100644 >--- a/Tools/DumpRenderTree/qt/DumpRenderTreeQt.h >+++ b/Tools/DumpRenderTree/qt/DumpRenderTreeQt.h >@@ -89,7 +89,6 @@ public: > void resetToConsistentStateBeforeTesting(const QUrl&); > > LayoutTestController *layoutTestController() const { return m_controller; } >- EventSender *eventSender() const { return m_eventSender; } > TextInputController *textInputController() const { return m_textInputController; } > QString persistentStoragePath() const { return m_persistentStoragePath; } > NetworkAccessManager *networkAccessManager() const { return m_networkAccessManager; } >@@ -184,6 +183,7 @@ public: > WebPage(QObject* parent, DumpRenderTree*); > virtual ~WebPage(); > QWebInspector* webInspector(); >+ EventSender* eventSender(); > void closeWebInspector(); > > QWebPage *createWindow(QWebPage::WebWindowType); >@@ -216,6 +216,7 @@ private slots: > > private: > QWebInspector* m_webInspector; >+ EventSender* m_eventSender; > QList<QWebFrame*> m_pendingGeolocationRequests; > DumpRenderTree *m_drt; > }; >diff --git a/Tools/DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp b/Tools/DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp >index 841531866ace5326976f9f2d10789361989b4212..1d4fe9fb0f7970550afb53542b7f9cc552a81c66 100644 >--- a/Tools/DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp >+++ b/Tools/DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp >@@ -98,6 +98,10 @@ webkit_test_plugin_new_instance(NPMIMEType mimetype, > obj->testWindowOpen = TRUE; > else if (strcasecmp(argn[i], "onSetWindow") == 0 && !obj->onSetWindow) > obj->onSetWindow = strdup(argv[i]); >+ else if (!strcasecmp(argn[i], "src") && strstr(argv[i], "plugin-document-has-focus.pl")) { >+ browser->setvalue(instance, NPPVpluginWindowBool, false); >+ obj->testKeyboardFocusForPlugins = TRUE; >+ } > } > > browser->getvalue(instance, NPNVprivateModeBool, (void *)&obj->cachedPrivateBrowsingMode); >@@ -163,6 +167,11 @@ webkit_test_plugin_set_window(NPP instance, NPWindow *window) > obj->testWindowOpen = FALSE; > } > >+ if (obj->testKeyboardFocusForPlugins) { >+ obj->eventLogging = true; >+ browser->setvalue(instance, NPPVpluginWindowBool, false); >+ executeScript(obj, "eventSender.keyDown('A');"); >+ } > } > > return obj->pluginTest->NPP_SetWindow(instance, window); >@@ -292,6 +301,11 @@ webkit_test_plugin_handle_event(NPP instance, void* event) > break; > case KeyRelease: > pluginLog(instance, "keyUp '%c'", keyEventToChar(&evt->xkey)); >+ if (obj->testKeyboardFocusForPlugins) { >+ obj->eventLogging = false; >+ obj->testKeyboardFocusForPlugins = FALSE; >+ executeScript(obj, "layoutTestController.notifyDone();"); >+ } > break; > case KeyPress: > pluginLog(instance, "keyDown '%c'", keyEventToChar(&evt->xkey));
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 60722
:
93331
|
93468
|
93471
|
93557
|
93578
|
93682
|
94103
|
94491
|
111133