Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(80)

Side by Side Diff: chrome/browser/webshare/share_target_pref_helper_unittest.cc

Issue 2639463002: Add a pref name for share targets, and store their manifest data. (Closed)
Patch Set: Fixed, as per feedback Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698