1 // Copyright 2018 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/android/tab_web_contents_delegate_android.h"
6
7 #include "base/android/jni_android.h"
8 #include "components/previews/core/previews_experiments.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10
11 namespace {
12
13 class TestTabWebContentsDelegateAndroid
14 : public android::TabWebContentsDelegateAndroid {
15 public:
TestTabWebContentsDelegateAndroid(blink::mojom::DisplayMode display_mode)16 explicit TestTabWebContentsDelegateAndroid(
17 blink::mojom::DisplayMode display_mode)
18 : TabWebContentsDelegateAndroid(base::android::AttachCurrentThread(),
19 nullptr) {
20 display_mode_ = display_mode;
21 }
22
GetDisplayMode(const content::WebContents * web_contents)23 blink::mojom::DisplayMode GetDisplayMode(
24 const content::WebContents* web_contents) override {
25 return display_mode_;
26 }
27
28 private:
29 blink::mojom::DisplayMode display_mode_ = blink::mojom::DisplayMode::kBrowser;
30 };
31
32 } // namespace
33
34 namespace android {
35
TEST(TabWebContentsDelegateAndroidTest,AdjustPreviewsStateForNavigationAllowsPreviews)36 TEST(TabWebContentsDelegateAndroidTest,
37 AdjustPreviewsStateForNavigationAllowsPreviews) {
38 TestTabWebContentsDelegateAndroid browser_display_delegate(
39 blink::mojom::DisplayMode::kBrowser);
40 blink::PreviewsState noscript_previews_state =
41 blink::PreviewsTypes::NOSCRIPT_ON;
42 browser_display_delegate.AdjustPreviewsStateForNavigation(
43 nullptr, &noscript_previews_state);
44 EXPECT_EQ(blink::PreviewsTypes::NOSCRIPT_ON, noscript_previews_state);
45 }
46
TEST(TabWebContentsDelegateAndroidTest,AdjustPreviewsStateForNavigationBlocksPreviews)47 TEST(TabWebContentsDelegateAndroidTest,
48 AdjustPreviewsStateForNavigationBlocksPreviews) {
49 TestTabWebContentsDelegateAndroid standalone_display_delegate(
50 blink::mojom::DisplayMode::kStandalone);
51 blink::PreviewsState noscript_previews_state =
52 blink::PreviewsTypes::NOSCRIPT_ON;
53 standalone_display_delegate.AdjustPreviewsStateForNavigation(
54 nullptr, &noscript_previews_state);
55 EXPECT_EQ(blink::PreviewsTypes::PREVIEWS_OFF, noscript_previews_state);
56
57 TestTabWebContentsDelegateAndroid minimal_ui_display_delegate(
58 blink::mojom::DisplayMode::kMinimalUi);
59 blink::PreviewsState litepage_previews_state =
60 blink::PreviewsTypes::SERVER_LITE_PAGE_ON;
61 minimal_ui_display_delegate.AdjustPreviewsStateForNavigation(
62 nullptr, &litepage_previews_state);
63 EXPECT_EQ(blink::PreviewsTypes::PREVIEWS_OFF, litepage_previews_state);
64 }
65
66 } // namespace android
67