OLD | NEW |
---|---|
(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 } | |
OLD | NEW |