Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 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 "base/strings/string16.h" | |
| 6 #include "base/strings/string_util.h" | |
| 7 #include "base/strings/utf_string_conversions.h" | |
| 8 #include "chrome/browser/webshare/share_target_pref_helper.h" | |
| 9 #include "chrome/common/pref_names.h" | |
| 10 #include "chrome/test/base/testing_profile.h" | |
| 11 #include "components/prefs/pref_registry_simple.h" | |
| 12 #include "components/prefs/testing_pref_service.h" | |
| 13 #include "testing/gtest/include/gtest/gtest.h" | |
| 14 | |
| 15 class PrefRegistrySimple; | |
| 16 | |
| 17 namespace { | |
| 18 | |
| 19 class ShareTargetPrefHelperUnittest : public testing::Test { | |
| 20 protected: | |
| 21 ShareTargetPrefHelperUnittest() {} | |
| 22 ~ShareTargetPrefHelperUnittest() override {} | |
| 23 | |
| 24 void SetUp() override { | |
| 25 pref_service_ = std::unique_ptr<TestingPrefServiceSimple>( | |
|
Matt Giuca
2017/01/25 00:25:54
pref_service_.reset(new TPSS());
Prefer reset ove
constantina
2017/01/25 03:18:27
Done.
| |
| 26 new TestingPrefServiceSimple()); | |
| 27 pref_service_->registry()->RegisterDictionaryPref( | |
| 28 prefs::kWebShareVisitedTargets); | |
| 29 } | |
| 30 | |
| 31 PrefService* pref_service() { return pref_service_.get(); } | |
| 32 | |
| 33 private: | |
| 34 std::unique_ptr<TestingPrefServiceSimple> pref_service_; | |
| 35 }; | |
| 36 | |
| 37 constexpr char kUrlTemplateKey[] = "url_template"; | |
| 38 | |
| 39 TEST_F(ShareTargetPrefHelperUnittest, AddMultipleShareTargets) { | |
| 40 std::string manifest_url; | |
|
Matt Giuca
2017/01/25 00:25:53
nit: I *think* these should be declared along side
constantina
2017/01/25 03:18:27
Acknowledged. I think it makes the subtests look i
Matt Giuca
2017/01/30 03:32:39
I think the thing is you shouldn't be thinking of
constantina
2017/01/31 23:37:06
That makes sense. Done.
| |
| 41 base::Optional<std::string> expected_url_template; | |
| 42 std::string url_template; | |
| 43 const base::DictionaryValue* share_target_dict = nullptr; | |
| 44 const base::DictionaryValue* share_target_info_dict = nullptr; | |
| 45 | |
| 46 // Add a share target to prefs that wasn't previously stored. | |
| 47 manifest_url = "https://www.sharetarget.com/manifest.json"; | |
| 48 expected_url_template = base::Optional<std::string>("share/?title={title}"); | |
| 49 | |
| 50 AddShareTargetToPrefs(manifest_url, expected_url_template, | |
| 51 pref_service()); | |
| 52 | |
| 53 share_target_dict = | |
| 54 pref_service()->GetDictionary(prefs::kWebShareVisitedTargets); | |
| 55 EXPECT_EQ(1UL, share_target_dict->size()); | |
| 56 ASSERT_TRUE(share_target_dict->GetDictionaryWithoutPathExpansion( | |
| 57 manifest_url, &share_target_info_dict)); | |
| 58 EXPECT_EQ(1UL, share_target_info_dict->size()); | |
| 59 EXPECT_TRUE( | |
| 60 share_target_info_dict->GetString(kUrlTemplateKey, &url_template)); | |
| 61 EXPECT_EQ(url_template, expected_url_template); | |
| 62 | |
| 63 // Add second share target to prefs that wasn't previously stored. | |
| 64 manifest_url = "https://www.sharetarget2.com/manifest.json"; | |
| 65 expected_url_template = base::Optional<std::string>("share/?title={title}"); | |
| 66 | |
| 67 AddShareTargetToPrefs(manifest_url, expected_url_template, | |
| 68 pref_service()); | |
| 69 | |
| 70 share_target_dict = | |
| 71 pref_service()->GetDictionary(prefs::kWebShareVisitedTargets); | |
| 72 EXPECT_EQ(2UL, share_target_dict->size()); | |
| 73 ASSERT_TRUE(share_target_dict->GetDictionaryWithoutPathExpansion( | |
| 74 manifest_url, &share_target_info_dict)); | |
| 75 EXPECT_EQ(1UL, share_target_info_dict->size()); | |
| 76 EXPECT_TRUE( | |
| 77 share_target_info_dict->GetString(kUrlTemplateKey, &url_template)); | |
| 78 EXPECT_EQ(url_template, expected_url_template); | |
| 79 } | |
| 80 | |
| 81 TEST_F(ShareTargetPrefHelperUnittest, AddShareTargetTwice) { | |
| 82 std::string manifest_url; | |
|
Matt Giuca
2017/01/25 00:25:54
Again, just declare these as you need them. (Avoid
constantina
2017/01/25 03:18:27
As I said in last comment, I have to declare them
| |
| 83 base::Optional<std::string> expected_url_template; | |
| 84 std::string url_template; | |
| 85 const base::DictionaryValue* share_target_dict = nullptr; | |
| 86 const base::DictionaryValue* share_target_info_dict = nullptr; | |
| 87 | |
| 88 manifest_url = "https://www.sharetarget.com/manifest.json"; | |
| 89 expected_url_template = base::Optional<std::string>("share/?title={title}"); | |
| 90 | |
| 91 // Add a share target to prefs that wasn't previously stored. | |
| 92 AddShareTargetToPrefs(manifest_url, expected_url_template, | |
| 93 pref_service()); | |
| 94 | |
| 95 share_target_dict = | |
| 96 pref_service()->GetDictionary(prefs::kWebShareVisitedTargets); | |
| 97 EXPECT_EQ(1UL, share_target_dict->size()); | |
| 98 ASSERT_TRUE(share_target_dict->GetDictionaryWithoutPathExpansion( | |
| 99 manifest_url, &share_target_info_dict)); | |
| 100 EXPECT_EQ(1UL, share_target_info_dict->size()); | |
| 101 EXPECT_TRUE( | |
| 102 share_target_info_dict->GetString(kUrlTemplateKey, &url_template)); | |
| 103 EXPECT_EQ(url_template, expected_url_template); | |
| 104 | |
| 105 // Add same share target to prefs that was previously stored; shouldn't | |
| 106 // duplicate it. | |
| 107 AddShareTargetToPrefs(manifest_url, expected_url_template, | |
| 108 pref_service()); | |
| 109 | |
| 110 share_target_dict = | |
| 111 pref_service()->GetDictionary(prefs::kWebShareVisitedTargets); | |
| 112 EXPECT_EQ(1UL, share_target_dict->size()); | |
| 113 ASSERT_TRUE(share_target_dict->GetDictionaryWithoutPathExpansion( | |
| 114 manifest_url, &share_target_info_dict)); | |
| 115 EXPECT_EQ(1UL, share_target_info_dict->size()); | |
| 116 EXPECT_TRUE( | |
| 117 share_target_info_dict->GetString(kUrlTemplateKey, &url_template)); | |
| 118 EXPECT_EQ(url_template, expected_url_template); | |
| 119 } | |
| 120 | |
| 121 TEST_F(ShareTargetPrefHelperUnittest, UpdateShareTarget) { | |
| 122 std::string manifest_url; | |
| 123 base::Optional<std::string> expected_url_template; | |
| 124 std::string url_template; | |
| 125 const base::DictionaryValue* share_target_dict = nullptr; | |
| 126 const base::DictionaryValue* share_target_info_dict = nullptr; | |
| 127 | |
| 128 // Add a share target to prefs that wasn't previously stored. | |
| 129 manifest_url = "https://www.sharetarget.com/manifest.json"; | |
| 130 expected_url_template = base::Optional<std::string>("share/?title={title}"); | |
| 131 | |
| 132 AddShareTargetToPrefs(manifest_url, expected_url_template, | |
| 133 pref_service()); | |
| 134 | |
| 135 share_target_dict = | |
| 136 pref_service()->GetDictionary(prefs::kWebShareVisitedTargets); | |
| 137 EXPECT_EQ(1UL, share_target_dict->size()); | |
| 138 ASSERT_TRUE(share_target_dict->GetDictionaryWithoutPathExpansion( | |
| 139 manifest_url, &share_target_info_dict)); | |
| 140 EXPECT_EQ(1UL, share_target_info_dict->size()); | |
| 141 EXPECT_TRUE( | |
| 142 share_target_info_dict->GetString(kUrlTemplateKey, &url_template)); | |
| 143 EXPECT_EQ(url_template, expected_url_template); | |
| 144 | |
| 145 // Add same share target to prefs that was previously stored, with new | |
| 146 // url_template; should update the value. | |
| 147 manifest_url = "https://www.sharetarget.com/manifest.json"; | |
| 148 expected_url_template = | |
| 149 base::Optional<std::string>("share/?title={title}&text={text}"); | |
| 150 | |
| 151 AddShareTargetToPrefs(manifest_url, expected_url_template, | |
| 152 pref_service()); | |
| 153 | |
| 154 share_target_dict = | |
| 155 pref_service()->GetDictionary(prefs::kWebShareVisitedTargets); | |
| 156 EXPECT_EQ(1UL, share_target_dict->size()); | |
| 157 ASSERT_TRUE(share_target_dict->GetDictionaryWithoutPathExpansion( | |
| 158 manifest_url, &share_target_info_dict)); | |
| 159 EXPECT_EQ(1UL, share_target_info_dict->size()); | |
| 160 EXPECT_TRUE( | |
| 161 share_target_info_dict->GetString(kUrlTemplateKey, &url_template)); | |
| 162 EXPECT_EQ(url_template, expected_url_template); | |
| 163 } | |
| 164 | |
| 165 TEST_F(ShareTargetPrefHelperUnittest, DontAddNonShareTarget) { | |
| 166 std::string manifest_url; | |
|
Matt Giuca
2017/01/25 00:25:54
As with AddShareTarget, these can be constants bec
constantina
2017/01/25 03:18:27
Done.
| |
| 167 base::Optional<std::string> expected_url_template; | |
| 168 std::string url_template; | |
| 169 const base::DictionaryValue* share_target_dict = nullptr; | |
| 170 const base::DictionaryValue* share_target_info_dict = nullptr; | |
| 171 | |
| 172 // Don't add a site that has a null template. | |
| 173 manifest_url = "https://www.dudsharetarget.com/manifest.json"; | |
| 174 expected_url_template = base::nullopt; | |
| 175 | |
| 176 AddShareTargetToPrefs(manifest_url, expected_url_template, | |
| 177 pref_service()); | |
| 178 | |
| 179 share_target_dict = | |
| 180 pref_service()->GetDictionary(prefs::kWebShareVisitedTargets); | |
| 181 EXPECT_EQ(0UL, share_target_dict->size()); | |
| 182 ASSERT_FALSE(share_target_dict->GetDictionaryWithoutPathExpansion( | |
| 183 manifest_url, &share_target_info_dict)); | |
| 184 } | |
| 185 | |
| 186 TEST_F(ShareTargetPrefHelperUnittest, RemoveShareTarget) { | |
| 187 std::string manifest_url; | |
| 188 base::Optional<std::string> expected_url_template; | |
| 189 std::string url_template; | |
| 190 const base::DictionaryValue* share_target_dict = nullptr; | |
| 191 const base::DictionaryValue* share_target_info_dict = nullptr; | |
| 192 | |
| 193 // Add a share target to prefs that wasn't previously stored. | |
| 194 manifest_url = "https://www.sharetarget.com/manifest.json"; | |
| 195 expected_url_template = base::Optional<std::string>("share/?title={title}"); | |
| 196 | |
| 197 AddShareTargetToPrefs(manifest_url, expected_url_template, | |
| 198 pref_service()); | |
| 199 | |
| 200 share_target_dict = | |
| 201 pref_service()->GetDictionary(prefs::kWebShareVisitedTargets); | |
| 202 EXPECT_EQ(1UL, share_target_dict->size()); | |
| 203 ASSERT_TRUE(share_target_dict->GetDictionaryWithoutPathExpansion( | |
| 204 manifest_url, &share_target_info_dict)); | |
| 205 EXPECT_EQ(1UL, share_target_info_dict->size()); | |
| 206 EXPECT_TRUE( | |
| 207 share_target_info_dict->GetString(kUrlTemplateKey, &url_template)); | |
| 208 EXPECT_EQ(url_template, expected_url_template); | |
| 209 | |
| 210 // Share target already added now has null template. Remove from prefs. | |
| 211 manifest_url = "https://www.sharetarget.com/manifest.json"; | |
| 212 expected_url_template = base::nullopt; | |
| 213 | |
| 214 AddShareTargetToPrefs(manifest_url, expected_url_template, | |
| 215 pref_service()); | |
| 216 | |
| 217 share_target_dict = | |
| 218 pref_service()->GetDictionary(prefs::kWebShareVisitedTargets); | |
| 219 EXPECT_EQ(0UL, share_target_dict->size()); | |
| 220 } | |
| 221 | |
| 222 } // namespace | |
| OLD | NEW |