Chromium Code Reviews| Index: third_party/WebKit/Source/web/tests/WebFrameTest.cpp |
| diff --git a/third_party/WebKit/Source/web/tests/WebFrameTest.cpp b/third_party/WebKit/Source/web/tests/WebFrameTest.cpp |
| index a2fd5bc6e1f81b9c860c8f5171e9396187ed86b3..577bb28f1592a74929c27f2b44874389d364c387 100644 |
| --- a/third_party/WebKit/Source/web/tests/WebFrameTest.cpp |
| +++ b/third_party/WebKit/Source/web/tests/WebFrameTest.cpp |
| @@ -11415,4 +11415,51 @@ TEST_F(WebFrameTest, ClearClosedOpener) { |
| EXPECT_EQ(nullptr, helper.webView()->mainFrameImpl()->opener()); |
| } |
| +class ShowVirtualKeyboardObserverWidgetClient |
| + : public FrameTestHelpers::TestWebWidgetClient { |
| + public: |
| + ShowVirtualKeyboardObserverWidgetClient() : m_didShowVirtualKeyboard(false) {} |
| + |
| + void showVirtualKeyboardOnElementFocus() override { |
| + m_didShowVirtualKeyboard = true; |
| + } |
| + |
| + bool didShowVirtualKeyboard() const { return m_didShowVirtualKeyboard; } |
| + |
| + private: |
| + bool m_didShowVirtualKeyboard; |
| +}; |
| + |
| +TEST_F(WebFrameTest, ShowVirtualKeyboardOnElementFocus) { |
| + FrameTestHelpers::WebViewHelper webViewHelper; |
| + WebViewImpl* webView = webViewHelper.initialize(true); |
| + WebRemoteFrameImpl* remoteFrame = static_cast<WebRemoteFrameImpl*>( |
| + WebRemoteFrame::create(WebTreeScopeType::Document, nullptr)); |
|
dcheng
2017/03/09 02:00:25
Nit: WebRemoteFrameImpl::create will avoid the nee
EhsanK
2017/03/09 17:19:49
Acknowledged.
|
| + webView->setMainFrame(remoteFrame); |
| + RefPtr<SecurityOrigin> origin = |
|
EhsanK
2017/03/08 23:38:28
If I don't set this, it will be null for the frame
dcheng
2017/03/09 02:00:25
Nit: we usually we just create a unique origin her
EhsanK
2017/03/09 17:19:49
Acknowledged.
|
| + SecurityOrigin::createFromString("http://remote.com"); |
| + remoteFrame->frame()->securityContext()->setSecurityOrigin(origin); |
| + |
| + ShowVirtualKeyboardObserverWidgetClient webWidgetClient; |
| + WebLocalFrameImpl* localFrame = FrameTestHelpers::createLocalChild( |
| + remoteFrame, "child", nullptr, &webWidgetClient); |
| + |
| + registerMockedHttpURLLoad("input_field_default.html"); |
| + FrameTestHelpers::loadFrame(localFrame, |
| + m_baseURL + "input_field_default.html"); |
| + |
| + // Simulate an input element focus leading to Element::focus() call with a |
| + // user gesture. |
| + localFrame->setHasReceivedUserGesture(); |
| + localFrame->executeScript( |
| + WebScriptSource("window.focus();" |
| + "document.querySelector('input').focus();")); |
| + |
| + // Verify that the right WebWidgetClient has been notified. |
| + EXPECT_TRUE(webWidgetClient.didShowVirtualKeyboard()); |
| + |
| + remoteFrame->close(); |
| + webViewHelper.reset(); |
| +} |
| + |
| } // namespace blink |