blob: 353f597782d91001d0f3cd163368bd156e97f199 [file] [log] [blame]
// Copyright 2017 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 "components/data_reduction_proxy/content/renderer/content_previews_render_frame_observer.h"
#include "base/test/gtest_util.h"
#include "content/public/common/previews_state.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/blink/public/platform/web_url_response.h"
namespace data_reduction_proxy {
class ContentPreviewsRenderFrameObserverTest {
public:
// Exposes private static method for tests.
static bool ValidatePreviewsStateWithResponse(
content::PreviewsState previews_state,
const blink::WebURLResponse& web_url_response) {
return ContentPreviewsRenderFrameObserver::
ValidatePreviewsStateWithResponse(previews_state, web_url_response);
}
};
TEST(ContentPreviewsRenderFrameObserverTest,
ValidatePreviewsStateWithResponseNoHeaders) {
blink::WebURLResponse response_no_headers;
EXPECT_TRUE(
ContentPreviewsRenderFrameObserverTest::ValidatePreviewsStateWithResponse(
content::PREVIEWS_UNSPECIFIED, response_no_headers));
EXPECT_TRUE(
ContentPreviewsRenderFrameObserverTest::ValidatePreviewsStateWithResponse(
content::NOSCRIPT_ON, response_no_headers));
EXPECT_TRUE(
ContentPreviewsRenderFrameObserverTest::ValidatePreviewsStateWithResponse(
content::CLIENT_LOFI_ON, response_no_headers));
EXPECT_DCHECK_DEATH(
ContentPreviewsRenderFrameObserverTest::ValidatePreviewsStateWithResponse(
content::SERVER_LOFI_ON, response_no_headers));
EXPECT_DCHECK_DEATH(
ContentPreviewsRenderFrameObserverTest::ValidatePreviewsStateWithResponse(
content::SERVER_LITE_PAGE_ON, response_no_headers));
}
TEST(ContentPreviewsRenderFrameObserverTest,
ValidatePreviewsStateWithResponseLitePageHeader) {
blink::WebURLResponse response_with_lite_page;
response_with_lite_page.AddHttpHeaderField("chrome-proxy-content-transform",
"lite-page");
EXPECT_TRUE(
ContentPreviewsRenderFrameObserverTest::ValidatePreviewsStateWithResponse(
content::SERVER_LITE_PAGE_ON, response_with_lite_page));
EXPECT_DCHECK_DEATH(
ContentPreviewsRenderFrameObserverTest::ValidatePreviewsStateWithResponse(
content::PREVIEWS_UNSPECIFIED, response_with_lite_page));
EXPECT_DCHECK_DEATH(
ContentPreviewsRenderFrameObserverTest::ValidatePreviewsStateWithResponse(
content::NOSCRIPT_ON, response_with_lite_page));
EXPECT_DCHECK_DEATH(
ContentPreviewsRenderFrameObserverTest::ValidatePreviewsStateWithResponse(
content::CLIENT_LOFI_ON, response_with_lite_page));
EXPECT_DCHECK_DEATH(
ContentPreviewsRenderFrameObserverTest::ValidatePreviewsStateWithResponse(
content::SERVER_LOFI_ON, response_with_lite_page));
}
TEST(ContentPreviewsRenderFrameObserverTest,
ValidatePreviewsStateWithResponsePagePolicyHeader) {
blink::WebURLResponse response_with_page_policy;
response_with_page_policy.AddHttpHeaderField("Chrome-Proxy",
"Page-Policies=Empty-Image");
EXPECT_TRUE(
ContentPreviewsRenderFrameObserverTest::ValidatePreviewsStateWithResponse(
content::SERVER_LOFI_ON, response_with_page_policy));
EXPECT_DCHECK_DEATH(
ContentPreviewsRenderFrameObserverTest::ValidatePreviewsStateWithResponse(
content::PREVIEWS_UNSPECIFIED, response_with_page_policy));
EXPECT_DCHECK_DEATH(
ContentPreviewsRenderFrameObserverTest::ValidatePreviewsStateWithResponse(
content::NOSCRIPT_ON, response_with_page_policy));
EXPECT_DCHECK_DEATH(
ContentPreviewsRenderFrameObserverTest::ValidatePreviewsStateWithResponse(
content::CLIENT_LOFI_ON, response_with_page_policy));
EXPECT_DCHECK_DEATH(
ContentPreviewsRenderFrameObserverTest::ValidatePreviewsStateWithResponse(
content::SERVER_LITE_PAGE_ON, response_with_page_policy));
}
} // namespace data_reduction_proxy