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

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, 10 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_.reset(new TestingPrefServiceSimple());
26 pref_service_->registry()->RegisterDictionaryPref(
27 prefs::kWebShareVisitedTargets);
28 }
29
30 PrefService* pref_service() { return pref_service_.get(); }
31
32 private:
33 std::unique_ptr<TestingPrefServiceSimple> pref_service_;
34 };
35
36 constexpr char kUrlTemplateKey[] = "url_template";
37
38 TEST_F(ShareTargetPrefHelperUnittest, AddMultipleShareTargets) {
39 std::string manifest_url;
40 base::Optional<std::string> url_template;
41 std::string url_template_in_dict;
42 const base::DictionaryValue* share_target_dict = nullptr;
43 const base::DictionaryValue* share_target_info_dict = nullptr;
44
45 // Add a share target to prefs that wasn't previously stored.
46 manifest_url = "https://www.sharetarget.com/manifest.json";
47 url_template = base::Optional<std::string>("share/?title={title}");
48
49 AddShareTargetToPrefs(manifest_url, url_template, pref_service());
50
51 share_target_dict =
52 pref_service()->GetDictionary(prefs::kWebShareVisitedTargets);
53 EXPECT_EQ(1UL, share_target_dict->size());
54 ASSERT_TRUE(share_target_dict->GetDictionaryWithoutPathExpansion(
55 manifest_url, &share_target_info_dict));
56 EXPECT_EQ(1UL, share_target_info_dict->size());
57 EXPECT_TRUE(share_target_info_dict->GetString(kUrlTemplateKey,
58 &url_template_in_dict));
59 EXPECT_EQ(url_template_in_dict, url_template);
60
61 // Add second share target to prefs that wasn't previously stored.
62 manifest_url = "https://www.sharetarget2.com/manifest.json";
63 url_template = base::Optional<std::string>("share/?title={title}");
64
65 AddShareTargetToPrefs(manifest_url, url_template, pref_service());
66
67 share_target_dict =
68 pref_service()->GetDictionary(prefs::kWebShareVisitedTargets);
69 EXPECT_EQ(2UL, share_target_dict->size());
70 ASSERT_TRUE(share_target_dict->GetDictionaryWithoutPathExpansion(
71 manifest_url, &share_target_info_dict));
72 EXPECT_EQ(1UL, share_target_info_dict->size());
73 EXPECT_TRUE(share_target_info_dict->GetString(kUrlTemplateKey,
74 &url_template_in_dict));
75 EXPECT_EQ(url_template_in_dict, url_template);
76 }
77
78 TEST_F(ShareTargetPrefHelperUnittest, AddShareTargetTwice) {
79 const char kManifestUrl[] = "https://www.sharetarget.com/manifest.json";
80 const base::Optional<std::string> kUrlTemplate =
81 base::Optional<std::string>("share/?title={title}");
82
83 std::string url_template_in_dict;
84 const base::DictionaryValue* share_target_dict = nullptr;
85 const base::DictionaryValue* share_target_info_dict = nullptr;
86
87 // Add a share target to prefs that wasn't previously stored.
88 AddShareTargetToPrefs(kManifestUrl, kUrlTemplate, pref_service());
89
90 share_target_dict =
91 pref_service()->GetDictionary(prefs::kWebShareVisitedTargets);
92 EXPECT_EQ(1UL, share_target_dict->size());
93 ASSERT_TRUE(share_target_dict->GetDictionaryWithoutPathExpansion(
94 kManifestUrl, &share_target_info_dict));
95 EXPECT_EQ(1UL, share_target_info_dict->size());
96 EXPECT_TRUE(share_target_info_dict->GetString(kUrlTemplateKey,
97 &url_template_in_dict));
98 EXPECT_EQ(url_template_in_dict, kUrlTemplate);
99
100 // Add same share target to prefs that was previously stored; shouldn't
101 // duplicate it.
102 AddShareTargetToPrefs(kManifestUrl, kUrlTemplate, pref_service());
103
104 share_target_dict =
105 pref_service()->GetDictionary(prefs::kWebShareVisitedTargets);
106 EXPECT_EQ(1UL, share_target_dict->size());
107 ASSERT_TRUE(share_target_dict->GetDictionaryWithoutPathExpansion(
108 kManifestUrl, &share_target_info_dict));
109 EXPECT_EQ(1UL, share_target_info_dict->size());
110 EXPECT_TRUE(share_target_info_dict->GetString(kUrlTemplateKey,
111 &url_template_in_dict));
112 EXPECT_EQ(url_template_in_dict, kUrlTemplate);
113 }
114
115 TEST_F(ShareTargetPrefHelperUnittest, UpdateShareTarget) {
116 std::string manifest_url;
117 base::Optional<std::string> url_template;
118 std::string url_template_in_dict;
119 const base::DictionaryValue* share_target_dict = nullptr;
120 const base::DictionaryValue* share_target_info_dict = nullptr;
121
122 // Add a share target to prefs that wasn't previously stored.
123 manifest_url = "https://www.sharetarget.com/manifest.json";
124 url_template = base::Optional<std::string>("share/?title={title}");
125
126 AddShareTargetToPrefs(manifest_url, url_template, pref_service());
127
128 share_target_dict =
129 pref_service()->GetDictionary(prefs::kWebShareVisitedTargets);
130 EXPECT_EQ(1UL, share_target_dict->size());
131 ASSERT_TRUE(share_target_dict->GetDictionaryWithoutPathExpansion(
132 manifest_url, &share_target_info_dict));
133 EXPECT_EQ(1UL, share_target_info_dict->size());
134 EXPECT_TRUE(share_target_info_dict->GetString(kUrlTemplateKey,
135 &url_template_in_dict));
136 EXPECT_EQ(url_template_in_dict, url_template);
137
138 // Add same share target to prefs that was previously stored, with new
139 // url_template_in_dict; should update the value.
140 manifest_url = "https://www.sharetarget.com/manifest.json";
141 url_template =
142 base::Optional<std::string>("share/?title={title}&text={text}");
143
144 AddShareTargetToPrefs(manifest_url, url_template, pref_service());
145
146 share_target_dict =
147 pref_service()->GetDictionary(prefs::kWebShareVisitedTargets);
148 EXPECT_EQ(1UL, share_target_dict->size());
149 ASSERT_TRUE(share_target_dict->GetDictionaryWithoutPathExpansion(
150 manifest_url, &share_target_info_dict));
151 EXPECT_EQ(1UL, share_target_info_dict->size());
152 EXPECT_TRUE(share_target_info_dict->GetString(kUrlTemplateKey,
153 &url_template_in_dict));
154 EXPECT_EQ(url_template_in_dict, url_template);
155 }
156
157 TEST_F(ShareTargetPrefHelperUnittest, DontAddNonShareTarget) {
158 const char kManifestUrl[] = "https://www.dudsharetarget.com/manifest.json";
159 const base::Optional<std::string> kUrlTemplate;
160
161 std::string url_template_in_dict;
162 const base::DictionaryValue* share_target_dict = nullptr;
163 const base::DictionaryValue* share_target_info_dict = nullptr;
164
165 // Don't add a site that has a null template.
166 AddShareTargetToPrefs(kManifestUrl, kUrlTemplate, pref_service());
167
168 share_target_dict =
169 pref_service()->GetDictionary(prefs::kWebShareVisitedTargets);
170 EXPECT_EQ(0UL, share_target_dict->size());
171 ASSERT_FALSE(share_target_dict->GetDictionaryWithoutPathExpansion(
172 kManifestUrl, &share_target_info_dict));
173 }
174
175 TEST_F(ShareTargetPrefHelperUnittest, RemoveShareTarget) {
176 std::string manifest_url;
177 base::Optional<std::string> url_template;
178 std::string url_template_in_dict;
179 const base::DictionaryValue* share_target_dict = nullptr;
180 const base::DictionaryValue* share_target_info_dict = nullptr;
181
182 // Add a share target to prefs that wasn't previously stored.
183 manifest_url = "https://www.sharetarget.com/manifest.json";
184 url_template = base::Optional<std::string>("share/?title={title}");
185
186 AddShareTargetToPrefs(manifest_url, url_template, pref_service());
187
188 share_target_dict =
189 pref_service()->GetDictionary(prefs::kWebShareVisitedTargets);
190 EXPECT_EQ(1UL, share_target_dict->size());
191 ASSERT_TRUE(share_target_dict->GetDictionaryWithoutPathExpansion(
192 manifest_url, &share_target_info_dict));
193 EXPECT_EQ(1UL, share_target_info_dict->size());
194 EXPECT_TRUE(share_target_info_dict->GetString(kUrlTemplateKey,
195 &url_template_in_dict));
196 EXPECT_EQ(url_template_in_dict, url_template);
197
198 // Share target already added now has null template. Remove from prefs.
199 manifest_url = "https://www.sharetarget.com/manifest.json";
200 url_template = base::nullopt;
201
202 AddShareTargetToPrefs(manifest_url, url_template, pref_service());
203
204 share_target_dict =
205 pref_service()->GetDictionary(prefs::kWebShareVisitedTargets);
206 EXPECT_EQ(0UL, share_target_dict->size());
207 }
208
209 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698