1 // Copyright 2017 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 "components/previews/content/previews_user_data.h"
6
7 #include <stdint.h>
8
9 #include "base/time/time.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11
12 namespace previews {
13
TEST(PreviewsUserDataTest,TestConstructor)14 TEST(PreviewsUserDataTest, TestConstructor) {
15 uint64_t id = 5u;
16 std::unique_ptr<PreviewsUserData> data(new PreviewsUserData(5u));
17 EXPECT_EQ(id, data->page_id());
18 }
19
TEST(PreviewsUserDataTest,TestSetEligibilityReason)20 TEST(PreviewsUserDataTest, TestSetEligibilityReason) {
21 PreviewsUserData data(1u);
22 EXPECT_EQ(base::nullopt,
23 data.EligibilityReasonForPreview(PreviewsType::DEFER_ALL_SCRIPT));
24
25 data.SetEligibilityReasonForPreview(
26 PreviewsType::NOSCRIPT, PreviewsEligibilityReason::BLOCKLIST_UNAVAILABLE);
27 data.SetEligibilityReasonForPreview(
28 PreviewsType::NOSCRIPT,
29 PreviewsEligibilityReason::BLOCKLIST_DATA_NOT_LOADED);
30
31 EXPECT_EQ(base::nullopt,
32 data.EligibilityReasonForPreview(PreviewsType::DEFER_ALL_SCRIPT));
33 EXPECT_EQ(PreviewsEligibilityReason::BLOCKLIST_DATA_NOT_LOADED,
34 data.EligibilityReasonForPreview(PreviewsType::NOSCRIPT));
35 }
36
TEST(PreviewsUserDataTest,DeepCopy)37 TEST(PreviewsUserDataTest, DeepCopy) {
38 uint64_t id = 4u;
39 std::unique_ptr<PreviewsUserData> data =
40 std::make_unique<PreviewsUserData>(id);
41 EXPECT_EQ(id, data->page_id());
42
43 EXPECT_EQ(0, data->data_savings_inflation_percent());
44 EXPECT_FALSE(data->cache_control_no_transform_directive());
45 EXPECT_EQ(previews::PreviewsType::NONE, data->CommittedPreviewsType());
46 EXPECT_FALSE(data->block_listed_for_lite_page());
47
48 data->set_data_savings_inflation_percent(123);
49 data->set_cache_control_no_transform_directive();
50 data->SetCommittedPreviewsType(previews::PreviewsType::NOSCRIPT);
51 data->set_block_listed_for_lite_page(true);
52
53 PreviewsUserData data_copy(*data);
54 EXPECT_EQ(id, data_copy.page_id());
55 EXPECT_EQ(data->CoinFlipForNavigation(), data_copy.CoinFlipForNavigation());
56 EXPECT_EQ(123, data_copy.data_savings_inflation_percent());
57 EXPECT_TRUE(data_copy.cache_control_no_transform_directive());
58 EXPECT_EQ(previews::PreviewsType::NOSCRIPT,
59 data_copy.CommittedPreviewsType());
60 EXPECT_TRUE(data_copy.block_listed_for_lite_page());
61 }
62
TEST(PreviewsUserDataTest,TestCoinFlip_HasCommittedPreviewsType)63 TEST(PreviewsUserDataTest, TestCoinFlip_HasCommittedPreviewsType) {
64 uint64_t id = 1u;
65 std::unique_ptr<PreviewsUserData> data =
66 std::make_unique<PreviewsUserData>(id);
67
68 data->SetCommittedPreviewsTypeForTesting(PreviewsType::NOSCRIPT);
69 data->set_coin_flip_holdback_result(CoinFlipHoldbackResult::kHoldback);
70 EXPECT_FALSE(data->HasCommittedPreviewsType());
71
72 data->set_coin_flip_holdback_result(CoinFlipHoldbackResult::kAllowed);
73 EXPECT_TRUE(data->HasCommittedPreviewsType());
74 }
75
TEST(PreviewsUserDataTest,TestCoinFlip_CommittedPreviewsType)76 TEST(PreviewsUserDataTest, TestCoinFlip_CommittedPreviewsType) {
77 uint64_t id = 1u;
78 std::unique_ptr<PreviewsUserData> data =
79 std::make_unique<PreviewsUserData>(id);
80
81 data->SetCommittedPreviewsTypeForTesting(PreviewsType::NOSCRIPT);
82 data->set_coin_flip_holdback_result(CoinFlipHoldbackResult::kHoldback);
83 EXPECT_EQ(data->CommittedPreviewsType(), PreviewsType::NONE);
84 EXPECT_EQ(data->PreHoldbackCommittedPreviewsType(), PreviewsType::NOSCRIPT);
85
86 data->set_coin_flip_holdback_result(CoinFlipHoldbackResult::kAllowed);
87 EXPECT_EQ(data->CommittedPreviewsType(), PreviewsType::NOSCRIPT);
88 EXPECT_EQ(data->PreHoldbackCommittedPreviewsType(), PreviewsType::NOSCRIPT);
89 }
90
TEST(PreviewsUserDataTest,TestCoinFlip_AllowedPreviewsState)91 TEST(PreviewsUserDataTest, TestCoinFlip_AllowedPreviewsState) {
92 uint64_t id = 1u;
93 std::unique_ptr<PreviewsUserData> data =
94 std::make_unique<PreviewsUserData>(id);
95
96 data->set_allowed_previews_state(blink::PreviewsTypes::NOSCRIPT_ON);
97 data->set_coin_flip_holdback_result(CoinFlipHoldbackResult::kHoldback);
98 EXPECT_EQ(data->AllowedPreviewsState(), blink::PreviewsTypes::PREVIEWS_OFF);
99 EXPECT_EQ(data->PreHoldbackAllowedPreviewsState(),
100 blink::PreviewsTypes::NOSCRIPT_ON);
101
102 data->set_coin_flip_holdback_result(CoinFlipHoldbackResult::kAllowed);
103 EXPECT_EQ(data->AllowedPreviewsState(), blink::PreviewsTypes::NOSCRIPT_ON);
104 EXPECT_EQ(data->PreHoldbackAllowedPreviewsState(),
105 blink::PreviewsTypes::NOSCRIPT_ON);
106 }
107
TEST(PreviewsUserDataTest,TestCoinFlip_CommittedPreviewsState)108 TEST(PreviewsUserDataTest, TestCoinFlip_CommittedPreviewsState) {
109 uint64_t id = 1u;
110 std::unique_ptr<PreviewsUserData> data =
111 std::make_unique<PreviewsUserData>(id);
112
113 data->set_committed_previews_state(blink::PreviewsTypes::NOSCRIPT_ON);
114 data->set_coin_flip_holdback_result(CoinFlipHoldbackResult::kHoldback);
115 EXPECT_EQ(data->CommittedPreviewsState(), blink::PreviewsTypes::PREVIEWS_OFF);
116 EXPECT_EQ(data->PreHoldbackCommittedPreviewsState(),
117 blink::PreviewsTypes::NOSCRIPT_ON);
118
119 data->set_coin_flip_holdback_result(CoinFlipHoldbackResult::kAllowed);
120 EXPECT_EQ(data->CommittedPreviewsState(), blink::PreviewsTypes::NOSCRIPT_ON);
121 EXPECT_EQ(data->PreHoldbackCommittedPreviewsState(),
122 blink::PreviewsTypes::NOSCRIPT_ON);
123 }
124
125 } // namespace previews
126