Index: third_party/WebKit/Source/web/tests/FrameTestHelpers.cpp |
diff --git a/third_party/WebKit/Source/web/tests/FrameTestHelpers.cpp b/third_party/WebKit/Source/web/tests/FrameTestHelpers.cpp |
index 1d5d577c573e56c85b77ff6ce3b27572524aafdf..ffa6467f8a0036a3524fbff3f6dea78470ab158a 100644 |
--- a/third_party/WebKit/Source/web/tests/FrameTestHelpers.cpp |
+++ b/third_party/WebKit/Source/web/tests/FrameTestHelpers.cpp |
@@ -92,6 +92,12 @@ TestWebFrameClient* defaultWebFrameClient() |
return &client; |
} |
+TestWebWidgetClient* defaultWebWidgetClient() |
+{ |
+ DEFINE_STATIC_LOCAL(TestWebWidgetClient, client, ()); |
+ return &client; |
+} |
+ |
TestWebViewClient* defaultWebViewClient() |
{ |
DEFINE_STATIC_LOCAL(TestWebViewClient, client, ()); |
@@ -165,12 +171,18 @@ WebMouseEvent createMouseEvent(WebInputEvent::Type type, WebMouseEvent::Button b |
return result; |
} |
-WebLocalFrame* createLocalChild(WebRemoteFrame* parent, const WebString& name, WebFrameClient* client, WebFrame* previousSibling, const WebFrameOwnerProperties& properties) |
+WebLocalFrame* createLocalChild(WebRemoteFrame* parent, const WebString& name, WebFrameClient* client, WebWidgetClient* widgetClient, WebFrame* previousSibling, const WebFrameOwnerProperties& properties) |
{ |
if (!client) |
client = defaultWebFrameClient(); |
- return parent->createLocalChild(WebTreeScopeType::Document, name, nameToUniqueName(name), WebSandboxFlags::None, client, previousSibling, properties, nullptr); |
+ WebLocalFrame* frame = parent->createLocalChild(WebTreeScopeType::Document, name, nameToUniqueName(name), WebSandboxFlags::None, client, previousSibling, properties, nullptr); |
+ |
+ if (!widgetClient) |
+ widgetClient = defaultWebWidgetClient(); |
+ WebFrameWidget::create(widgetClient, frame); |
+ |
+ return frame; |
} |
WebRemoteFrame* createRemoteChild(WebRemoteFrame* parent, WebRemoteFrameClient* client, const WebString& name) |
@@ -180,7 +192,6 @@ WebRemoteFrame* createRemoteChild(WebRemoteFrame* parent, WebRemoteFrameClient* |
WebViewHelper::WebViewHelper(SettingOverrider* settingOverrider) |
: m_webView(nullptr) |
- , m_webViewWidget(nullptr) |
, m_settingOverrider(settingOverrider) |
{ |
} |
@@ -221,7 +232,7 @@ WebViewImpl* WebViewHelper::initializeWithOpener(WebFrame* opener, bool enableJa |
m_webView->setMainFrame(frame); |
// TODO(dcheng): The main frame widget currently has a special case. |
// Eliminate this once WebView is no longer a WebWidget. |
- m_webViewWidget = blink::WebFrameWidget::create(webWidgetClient, m_webView, frame); |
+ blink::WebFrameWidget::create(webWidgetClient, m_webView, frame); |
m_testWebViewClient = webViewClient; |
@@ -244,10 +255,6 @@ WebViewImpl* WebViewHelper::initializeAndLoad(const std::string& url, bool enabl |
void WebViewHelper::reset() |
{ |
- if (m_webViewWidget) { |
- m_webViewWidget->close(); |
- m_webViewWidget = nullptr; |
- } |
if (m_webView) { |
DCHECK(m_webView->mainFrame()->isWebRemoteFrame() || !testClientForFrame(m_webView->mainFrame())->isLoading()); |
m_webView->willCloseLayerTreeView(); |
@@ -275,10 +282,14 @@ WebFrame* TestWebFrameClient::createChildFrame(WebLocalFrame* parent, WebTreeSco |
return frame; |
} |
-void TestWebFrameClient::frameDetached(WebFrame* frame, DetachType type) |
+void TestWebFrameClient::frameDetached(WebLocalFrame* frame, DetachType type) |
{ |
if (type == DetachType::Remove && frame->parent()) |
frame->parent()->removeChild(frame); |
+ |
+ if (frame->frameWidget()) |
+ frame->frameWidget()->close(); |
+ |
frame->close(); |
} |
@@ -310,5 +321,20 @@ void TestWebViewClient::initializeLayerTreeView() |
m_layerTreeView = wrapUnique(new WebLayerTreeViewImplForTesting); |
} |
+void TestWebViewWidgetClient::initializeLayerTreeView() |
+{ |
+ m_testWebViewClient->initializeLayerTreeView(); |
+} |
+ |
+WebLayerTreeView* TestWebViewWidgetClient::layerTreeView() |
+{ |
+ return m_testWebViewClient->layerTreeView(); |
+} |
+ |
+void TestWebViewWidgetClient::scheduleAnimation() |
+{ |
+ m_testWebViewClient->scheduleAnimation(); |
+} |
+ |
} // namespace FrameTestHelpers |
} // namespace blink |