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