TEST_F(WebPluginContainerTest, GestureLongPressReachesPlugin) { URLTestHelpers::registerMockedURLFromBaseURL( WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("plugin_container.html")); EventTestPluginWebFrameClient pluginWebFrameClient; // Must outlive webViewHelper. FrameTestHelpers::WebViewHelper webViewHelper; WebView* webView = webViewHelper.initializeAndLoad(m_baseURL + "plugin_container.html", true, &pluginWebFrameClient); ASSERT(webView); webView->settings()->setPluginsEnabled(true); webView->resize(WebSize(300, 300)); webView->updateAllLifecyclePhases(); runPendingTasks(); WebElement pluginContainerOneElement = webView->mainFrame()->document().getElementById(WebString::fromUTF8("translated-plugin")); WebPlugin* plugin = static_cast<WebPluginContainerImpl*>(pluginContainerOneElement.pluginContainer())->plugin(); EventTestPlugin* testPlugin = static_cast<EventTestPlugin*>(plugin); WebGestureEvent event; event.type = WebInputEvent::GestureLongPress; event.sourceDevice = WebGestureDeviceTouchscreen; // First, send an event that doesn't hit the plugin to verify that the // plugin doesn't receive it. event.x = 0; event.y = 0; webView->handleInputEvent(event); runPendingTasks(); EXPECT_EQ(WebInputEvent::Undefined, testPlugin->getLastInputEventType()); // Next, send an event that does hit the plugin, and verify it does receive it. WebRect rect = pluginContainerOneElement.boundsInViewportSpace(); event.x = rect.x + rect.width / 2; event.y = rect.y + rect.height / 2; webView->handleInputEvent(event); runPendingTasks(); EXPECT_EQ(WebInputEvent::GestureLongPress, testPlugin->getLastInputEventType()); }
void TextInputController::setComposition(const CppArgumentList& arguments, CppVariant* result) { result->setNull(); WebView* view = getMainFrame() ? getMainFrame()->view() : 0; if (!view) return; if (arguments.size() < 1) return; // Sends a keydown event with key code = 0xE5 to emulate input method behavior. WebKeyboardEvent keyDown; keyDown.type = WebInputEvent::RawKeyDown; keyDown.modifiers = 0; keyDown.windowsKeyCode = 0xE5; // VKEY_PROCESSKEY keyDown.setKeyIdentifierFromWindowsKeyCode(); view->handleInputEvent(keyDown); WebVector<WebCompositionUnderline> underlines; WebString text(WebString::fromUTF8(arguments[0].toString())); view->setComposition(text, underlines, 0, text.length()); }