Commit c0100180 authored by danakj's avatar danakj Committed by Commit Bot

Some cleanup in FrameTestHelpers

While trying to remove WebLayerTreeView this file confused me greatly
so try to simplify and clarify things a bit.

TestWebViewWidgetClient was-a TestWebWidgetClient, but you can
get a WebWidgetClient from a WebView directly by calling
WidgetClient(), so no need for this adapter.

AllowsBrokenNullLayerTreeView() is for when InitializeLayerTreeView()
returns null, which these classes don't do, so remove it.

R=dcheng@chromium.org

Bug: 838693
Change-Id: I65c258d0eaedb55de70edecffa134f5bf050cb76
Reviewed-on: https://chromium-review.googlesource.com/1115901Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Commit-Queue: danakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#570883}
parent 0c2015e1
......@@ -191,22 +191,22 @@ WebLocalFrameImpl* CreateProvisional(WebRemoteFrame& old_frame,
ParsedFeaturePolicy()));
client->Bind(frame, std::move(owned_client));
// Create a local root, if necessary.
std::unique_ptr<TestWebWidgetClient> owned_widget_client;
std::unique_ptr<WebWidgetClient> owned_widget_client;
WebWidgetClient* widget_client = nullptr;
if (!frame->Parent()) {
// TODO(dcheng): The main frame widget currently has a special case.
// Eliminate this once WebView is no longer a WebWidget.
owned_widget_client = std::make_unique<TestWebViewWidgetClient>(
*static_cast<TestWebViewClient*>(frame->ViewImpl()->Client()));
widget_client = frame->ViewImpl()->Client()->WidgetClient();
} else if (frame->Parent()->IsWebRemoteFrame()) {
owned_widget_client = std::make_unique<TestWebWidgetClient>();
widget_client = owned_widget_client.get();
}
if (owned_widget_client) {
WebFrameWidget::Create(owned_widget_client.get(), frame);
// Set an initial size for subframes.
if (widget_client) {
WebFrameWidget::Create(widget_client, frame);
if (frame->Parent())
frame->FrameWidget()->Resize(WebSize());
client->BindWidgetClient(std::move(owned_widget_client));
}
client->BindWidgetClient(std::move(owned_widget_client));
return frame;
}
......@@ -265,7 +265,7 @@ WebViewImpl* WebViewHelper::InitializeWithOpener(
WebFrame* opener,
TestWebFrameClient* web_frame_client,
TestWebViewClient* web_view_client,
TestWebWidgetClient* web_widget_client,
TestWebWidgetClient* test_web_widget_client,
void (*update_settings_func)(WebSettings*)) {
Reset();
......@@ -280,17 +280,13 @@ WebViewImpl* WebViewHelper::InitializeWithOpener(
// TODO(dcheng): The main frame widget currently has a special case.
// Eliminate this once WebView is no longer a WebWidget.
std::unique_ptr<TestWebWidgetClient> owned_web_widget_client;
if (!web_widget_client) {
owned_web_widget_client =
std::make_unique<TestWebViewWidgetClient>(*test_web_view_client_);
web_widget_client = owned_web_widget_client.get();
}
WebWidgetClient* web_widget_client = test_web_widget_client;
if (!web_widget_client)
web_widget_client = test_web_view_client_->WidgetClient();
blink::WebFrameWidget::Create(web_widget_client, frame);
// Set an initial size for subframes.
if (frame->Parent())
frame->FrameWidget()->Resize(WebSize());
web_frame_client->BindWidgetClient(std::move(owned_web_widget_client));
return web_view_;
}
......@@ -408,7 +404,7 @@ void TestWebFrameClient::Bind(WebLocalFrame* frame,
}
void TestWebFrameClient::BindWidgetClient(
std::unique_ptr<TestWebWidgetClient> client) {
std::unique_ptr<WebWidgetClient> client) {
DCHECK(!owned_widget_client_);
owned_widget_client_ = std::move(client);
}
......@@ -490,10 +486,6 @@ WebLayerTreeView* TestWebViewClient::InitializeLayerTreeView() {
return layer_tree_view_.get();
}
WebLayerTreeView* TestWebViewWidgetClient::InitializeLayerTreeView() {
return test_web_view_client_.InitializeLayerTreeView();
}
WebLayerTreeView* TestWebWidgetClient::InitializeLayerTreeView() {
auto layer_tree_settings =
WebLayerTreeViewImplForTesting::DefaultLayerTreeSettings();
......@@ -509,14 +501,5 @@ WebLayerTreeView* TestWebWidgetClient::InitializeLayerTreeView() {
return layer_tree_view_.get();
}
void TestWebViewWidgetClient::ScheduleAnimation() {
test_web_view_client_.ScheduleAnimation();
}
void TestWebViewWidgetClient::DidMeaningfulLayout(
WebMeaningfulLayout layout_type) {
test_web_view_client_.DidMeaningfulLayout(layout_type);
}
} // namespace FrameTestHelpers
} // namespace blink
......@@ -164,28 +164,12 @@ class TestWebWidgetClient : public WebWidgetClient {
~TestWebWidgetClient() override = default;
// WebWidgetClient:
bool AllowsBrokenNullLayerTreeView() const override { return true; }
WebLayerTreeView* InitializeLayerTreeView() override;
private:
std::unique_ptr<WebLayerTreeView> layer_tree_view_;
};
class TestWebViewWidgetClient : public TestWebWidgetClient {
public:
explicit TestWebViewWidgetClient(TestWebViewClient& test_web_view_client)
: test_web_view_client_(test_web_view_client) {}
~TestWebViewWidgetClient() override = default;
// TestWebViewWidgetClient:
WebLayerTreeView* InitializeLayerTreeView() override;
void ScheduleAnimation() override;
void DidMeaningfulLayout(WebMeaningfulLayout) override;
private:
TestWebViewClient& test_web_view_client_;
};
class TestWebViewClient : public WebViewClient {
public:
~TestWebViewClient() override = default;
......@@ -201,8 +185,6 @@ class TestWebViewClient : public WebViewClient {
bool CanUpdateLayout() override { return true; }
private:
friend class TestWebViewWidgetClient;
std::unique_ptr<WebLayerTreeViewImplForTesting> layer_tree_view_;
bool animation_scheduled_ = false;
};
......@@ -295,7 +277,7 @@ class TestWebFrameClient : public WebLocalFrameClient {
void Bind(WebLocalFrame*,
std::unique_ptr<TestWebFrameClient> self_owned = nullptr);
// Note: only needed for local roots.
void BindWidgetClient(std::unique_ptr<TestWebWidgetClient>);
void BindWidgetClient(std::unique_ptr<WebWidgetClient>);
// WebLocalFrameClient:
void FrameDetached(DetachType) override;
......@@ -333,7 +315,7 @@ class TestWebFrameClient : public WebLocalFrameClient {
// Bind().
WebLocalFrame* frame_ = nullptr;
std::unique_ptr<TestWebWidgetClient> owned_widget_client_;
std::unique_ptr<WebWidgetClient> owned_widget_client_;
};
// Minimal implementation of WebRemoteFrameClient needed for unit tests that
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment