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

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: Added tests. 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 2016 The Chromium Authors. All rights reserved.
Matt Giuca 2017/01/23 03:00:58 Copyright 2017.
constantina 2017/01/24 02:03:43 Done.
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.cc"
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 class ShareTargetPrefHelperUnittest : public testing::Test {
18 protected:
19 ShareTargetPrefHelperUnittest() {}
20 ~ShareTargetPrefHelperUnittest() override {}
21 };
22
23 TEST_F(ShareTargetPrefHelperUnittest, ShareTargetInfoFromManifestToPrefs) {
Matt Giuca 2017/01/23 03:00:58 I think this could be broken up into multiple indi
constantina 2017/01/24 02:03:43 Done.
24 constexpr char kUrlTemplateKey[] = "url_template";
25
26 TestingPrefServiceSimple* pref_service = new TestingPrefServiceSimple();
Matt Giuca 2017/01/23 03:00:58 This will leak memory. Can this be a non-pointer s
constantina 2017/01/24 02:03:43 Done.
27 pref_service->registry()->RegisterDictionaryPref(
28 prefs::kWebShareVisitedTargets);
29
30 std::string share_target_origin;
31 base::string16 url_string16;
32 const base::DictionaryValue* share_target_dict = nullptr;
33 const base::DictionaryValue* share_target_info_dict = nullptr;
34
35 // Add a share target to prefs that wasn't previously stored.
36 {
37 share_target_origin = "https://www.sharetarget.com/";
38 url_string16 = base::ASCIIToUTF16("share/?title={title}");
39
40 AddShareTargetToPrefs(share_target_origin,
41 base::NullableString16(url_string16, false),
42 pref_service);
43
44 share_target_dict =
45 pref_service->GetDictionary(prefs::kWebShareVisitedTargets);
46 EXPECT_EQ(1UL, share_target_dict->size());
47 ASSERT_TRUE(share_target_dict->GetDictionaryWithoutPathExpansion(
48 share_target_origin, &share_target_info_dict));
49 EXPECT_EQ(1UL, share_target_info_dict->size());
50 std::string url_template_in_dict;
Matt Giuca 2017/01/23 03:00:58 I think you can drop "_in_dict" since there is no
constantina 2017/01/24 02:03:43 Done.
51 ASSERT_TRUE(share_target_info_dict->GetString(kUrlTemplateKey,
Matt Giuca 2017/01/23 03:00:58 Does not have to be an ASSERT, since if this fails
constantina 2017/01/24 02:03:43 Done.
52 &url_template_in_dict));
53 EXPECT_TRUE(base::EqualsASCII(url_string16, url_template_in_dict));
54 }
55
56 // Add same share target to prefs that was previously stored; shouldn't
57 // duplicate it.
58 {
59 AddShareTargetToPrefs(share_target_origin,
60 base::NullableString16(url_string16, false),
61 pref_service);
62
63 share_target_dict =
64 pref_service->GetDictionary(prefs::kWebShareVisitedTargets);
65 EXPECT_EQ(1UL, share_target_dict->size());
66 ASSERT_TRUE(share_target_dict->GetDictionaryWithoutPathExpansion(
67 share_target_origin, &share_target_info_dict));
68 EXPECT_EQ(1UL, share_target_info_dict->size());
69 std::string url_template_in_dict;
70 ASSERT_TRUE(share_target_info_dict->GetString(kUrlTemplateKey,
71 &url_template_in_dict));
72 EXPECT_TRUE(base::EqualsASCII(url_string16, url_template_in_dict));
73 }
74
75 // Add second share target to prefs that wasn't previously stored.
76 {
77 share_target_origin = "https://www.sharetarget2.com/";
78 url_string16 = base::ASCIIToUTF16("share/?title={title}");
79
80 AddShareTargetToPrefs(share_target_origin,
81 base::NullableString16(url_string16, false),
82 pref_service);
83
84 share_target_dict =
85 pref_service->GetDictionary(prefs::kWebShareVisitedTargets);
86 EXPECT_EQ(2UL, share_target_dict->size());
87 ASSERT_TRUE(share_target_dict->GetDictionaryWithoutPathExpansion(
88 share_target_origin, &share_target_info_dict));
89 EXPECT_EQ(1UL, share_target_info_dict->size());
90 std::string url_template_in_dict;
91 ASSERT_TRUE(share_target_info_dict->GetString(kUrlTemplateKey,
92 &url_template_in_dict));
93 EXPECT_TRUE(base::EqualsASCII(url_string16, url_template_in_dict));
94 }
95
96 // Share target already added now has null template. Remove from prefs.
97 {
98 share_target_origin = "https://www.sharetarget2.com/";
99
100 AddShareTargetToPrefs(share_target_origin,
101 base::NullableString16(url_string16, true),
Matt Giuca 2017/01/23 03:00:58 I don't think it's worth testing a *null* Nullable
constantina 2017/01/24 02:03:43 Done.
102 pref_service);
103
104 share_target_dict =
105 pref_service->GetDictionary(prefs::kWebShareVisitedTargets);
106 EXPECT_EQ(1UL, share_target_dict->size());
107 }
108
109 // Don't add a site that has a null template.
110 {
111 share_target_origin = "https://www.dudsharetarget.com/";
112
113 AddShareTargetToPrefs(share_target_origin,
114 base::NullableString16(url_string16, true),
115 pref_service);
116
117 share_target_dict =
118 pref_service->GetDictionary(prefs::kWebShareVisitedTargets);
119 EXPECT_EQ(1UL, share_target_dict->size());
120 ASSERT_FALSE(share_target_dict->GetDictionaryWithoutPathExpansion(
121 share_target_origin, &share_target_info_dict));
122 }
123
124 // Add same share target to prefs that was previously stored, with new
125 // url_template; should update the value.
126 {
127 share_target_origin = "https://www.sharetarget.com/";
128 url_string16 = base::ASCIIToUTF16("share/?title={title}&text={text}");
129
130 AddShareTargetToPrefs(share_target_origin,
131 base::NullableString16(url_string16, false),
132 pref_service);
133
134 share_target_dict =
135 pref_service->GetDictionary(prefs::kWebShareVisitedTargets);
136 EXPECT_EQ(1UL, share_target_dict->size());
137 ASSERT_TRUE(share_target_dict->GetDictionaryWithoutPathExpansion(
138 share_target_origin, &share_target_info_dict));
139 EXPECT_EQ(1UL, share_target_info_dict->size());
140 std::string url_template_in_dict;
141 ASSERT_TRUE(share_target_info_dict->GetString(kUrlTemplateKey,
142 &url_template_in_dict));
143 EXPECT_TRUE(base::EqualsASCII(url_string16, url_template_in_dict));
144 }
145 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698