blob: 0bc092a5f66f23526a9f7d4f41b011be500d56fd [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "core/frame/LocalFrame.h"
#include "core/layout/LayoutTestHelper.h"
#include "core/loader/EmptyClients.h"
#include "core/testing/DummyPageHolder.h"
#include "platform/loader/fetch/FetchParameters.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace blink {
class TestLocalFrameClient : public EmptyLocalFrameClient {
public:
explicit TestLocalFrameClient(
WebURLRequest::PreviewsState frame_previews_state)
: frame_previews_state_(frame_previews_state) {}
~TestLocalFrameClient() override = default;
WebURLRequest::PreviewsState GetPreviewsStateForFrame() const override {
return frame_previews_state_;
}
private:
const WebURLRequest::PreviewsState frame_previews_state_;
};
TEST(LocalFrameTest, MaybeAllowPlaceholderImageUsesSpecifiedRequestValue) {
ResourceRequest request1;
request1.SetURL(KURL("http://insecure.com"));
request1.SetPreviewsState(WebURLRequest::kClientLoFiOn);
FetchParameters params1(request1);
DummyPageHolder::Create(IntSize(800, 600), nullptr,
new TestLocalFrameClient(WebURLRequest::kPreviewsOff))
->GetFrame()
.MaybeAllowImagePlaceholder(params1);
EXPECT_EQ(FetchParameters::kAllowPlaceholder,
params1.GetPlaceholderImageRequestType());
ResourceRequest request2;
request2.SetURL(KURL("https://secure.com"));
request2.SetPreviewsState(WebURLRequest::kPreviewsOff);
FetchParameters params2(request2);
DummyPageHolder::Create(
IntSize(800, 600), nullptr,
new TestLocalFrameClient(WebURLRequest::kClientLoFiOn))
->GetFrame()
.MaybeAllowImagePlaceholder(params2);
EXPECT_EQ(FetchParameters::kDisallowPlaceholder,
params2.GetPlaceholderImageRequestType());
}
TEST(LocalFrameTest, MaybeAllowPlaceholderImageUsesFramePreviewsState) {
ResourceRequest request1;
request1.SetURL(KURL("http://insecure.com"));
request1.SetPreviewsState(WebURLRequest::kPreviewsUnspecified);
FetchParameters params1(request1);
DummyPageHolder::Create(
IntSize(800, 600), nullptr,
new TestLocalFrameClient(WebURLRequest::kClientLoFiOn))
->GetFrame()
.MaybeAllowImagePlaceholder(params1);
EXPECT_EQ(FetchParameters::kAllowPlaceholder,
params1.GetPlaceholderImageRequestType());
ResourceRequest request2;
request2.SetURL(KURL("http://insecure.com"));
request2.SetPreviewsState(WebURLRequest::kPreviewsUnspecified);
FetchParameters params2(request2);
DummyPageHolder::Create(
IntSize(800, 600), nullptr,
new TestLocalFrameClient(WebURLRequest::kServerLitePageOn))
->GetFrame()
.MaybeAllowImagePlaceholder(params2);
EXPECT_EQ(FetchParameters::kDisallowPlaceholder,
params2.GetPlaceholderImageRequestType());
}
TEST(LocalFrameTest,
MaybeAllowPlaceholderImageConditionalOnSchemeForServerLoFi) {
ResourceRequest request1;
request1.SetURL(KURL("https://secure.com"));
request1.SetPreviewsState(WebURLRequest::kPreviewsUnspecified);
FetchParameters params1(request1);
DummyPageHolder::Create(
IntSize(800, 600), nullptr,
new TestLocalFrameClient(WebURLRequest::kServerLoFiOn |
WebURLRequest::kClientLoFiOn))
->GetFrame()
.MaybeAllowImagePlaceholder(params1);
EXPECT_EQ(FetchParameters::kAllowPlaceholder,
params1.GetPlaceholderImageRequestType());
ResourceRequest request2;
request2.SetURL(KURL("http://insecure.com"));
request2.SetPreviewsState(WebURLRequest::kPreviewsUnspecified);
FetchParameters params2(request2);
DummyPageHolder::Create(
IntSize(800, 600), nullptr,
new TestLocalFrameClient(WebURLRequest::kServerLoFiOn |
WebURLRequest::kClientLoFiOn))
->GetFrame()
.MaybeAllowImagePlaceholder(params2);
EXPECT_EQ(FetchParameters::kDisallowPlaceholder,
params2.GetPlaceholderImageRequestType());
}
} // namespace blink